OSDN Git Service

Corrected 1.54
[pukiwiki/pukiwiki.git] / plugin / template.inc.php
index 8ebce5a..99c188e 100644 (file)
 <?php
-// $Id: template.inc.php,v 1.5 2002/11/29 00:09:01 panda Exp $
+// $Id: template.inc.php,v 1.17 2004/07/31 03:09:20 henoheno Exp $
+
+define('MAX_LEN',60);
 
-define("MAX_LEN",60);
 function plugin_template_action()
 {
-       global $vars,$script,$non_list,$whatsnew,$_btn_template;
-       
-       global $script,$rows,$cols,$hr,$vars,$function_freeze,$WikiName,$BracketName;
-       global $_btn_addtop,$_btn_preview,$_btn_update,$_btn_freeze,$_msg_help,$_btn_notchangetimestamp;
-       global $whatsnew,$_btn_template,$_btn_load,$non_list,$load_template_func;
+       global $script,$vars;
+       global $_title_edit;
+       global $_msg_template_start,$_msg_template_end,$_msg_template_page,$_msg_template_refer;
+       global $_btn_template_create,$_title_template;
+       global $_err_template_already,$_err_template_invalid,$_msg_template_force;
 
-       $ret = "";
-       
-       // edit
-       if($vars["refer"] &&  $vars["page"] && $vars["submit"] && !is_page($vars["refer"]))
+       if (!array_key_exists('refer',$vars) or !is_page($vars['refer']))
        {
-               // ¥Ú¡¼¥¸Ì¾¤¬WikiName¤Ç¤Ê¤¯¡¢BracketName¤Ç¤Ê¤±¤ì¤ÐBracketName¤È¤·¤Æ²ò¼á
-               if(!preg_match("/^(($WikiName)|($BracketName))$/",$vars["refer"]))
-               {
-                       $vars["refer"] = "[[$vars[refer]]]";
-               }
-               
-               $page = $vars["refer"];
-               
-               $lines = @file(get_filename(encode($vars["page"])));
-               
-               if($vars["begin"] <= $vars["end"])
-               {
-                       for($i=$vars["begin"];$i<=$vars["end"];$i++)
-                       {
-                               $postdata.= $lines[$i];
-                       }
-               }
-               
-               if($vars["help"] == "true")
-                       $help = $hr.catrule();
-               else
-                       $help = "<br />\n<ul><li><a href=\"$script?cmd=edit&amp;help=true&amp;page=".rawurlencode($page)."\">$_msg_help</a></ul></li>\n";
+               return FALSE;
+       }
 
-               if($function_freeze)
-                       $str_freeze = '<input type="submit" name="freeze" value="'.$_btn_freeze.'" accesskey="f" />';
-$retvar["body"] =  '
-<form action="'.$script.'" method="post">
-<table cellspacing="3" cellpadding="0" border="0">
- <tr>
-  <td align="right">
-'.$template.'
-  </td>
- </tr>
- <tr>
-  <td align="right">
-   <input type="hidden" name="page" value="'.$page.'" />
-   <input type="hidden" name="digest" value="'.$digest.'" />
-   <textarea name="msg" rows="'.$rows.'" cols="'.$cols.'" wrap="virtual">
-'.$postdata.'</textarea>
-  </td>
- </tr>
- <tr>
-  <td>
-   <input type="submit" name="preview" value="'.$_btn_preview.'" accesskey="p" />
-   <input type="submit" name="write" value="'.$_btn_update.'" accesskey="s" />
-   '.$add_top.'
-   <input type="checkbox" name="notimestamp" value="true" /><span class="small">'.$_btn_notchangetimestamp.'</span>
-  </td>
- </tr>
-</table>
-</form>
-<form action="'.$script.'?cmd=freeze" method="post">
-<table cellspacing="3" cellpadding="0" border="0">
-  <td align="right">
-   <input type="hidden" name="page" value="'.$vars["page"].'" />
-   '.$str_freeze.'
-  </td>
- </tr>
-</table>
-</form>
-' . $help;
+       $lines = get_source($vars['refer']);
 
-               $retvar["msg"] = "$1 ¤ÎÊÔ½¸";
-               
-               $vars["page"] = $vars["refer"];
-               return $retvar;
+       // #freeze¤òºï½ü
+       if (count($lines) and rtrim($lines[0]) == '#freeze')
+       {
+               array_shift($lines);
+       }
+
+       $begin = (array_key_exists('begin',$vars) and is_numeric($vars['begin'])) ? $vars['begin'] : 0;
+       $end = (array_key_exists('end',$vars) and is_numeric($vars['end'])) ? $vars['end'] : count($lines) - 1;
+       if ($begin > $end)
+       {
+               $temp = $begin;
+               $begin = $end;
+               $end = $temp;
        }
-       // input mb_strwidth()
-       else if($vars["refer"])
+       $page = array_key_exists('page',$vars) ? $vars['page'] : '';
+       $is_page = is_page($page);
+
+       // edit
+       if ($is_pagename = is_pagename($page) and (!$is_page or !empty($vars['force'])))
        {
-               if(is_page($vars["refer"]))
-               {
-                       
-                       $begin_select = "";
-                       $end_select = "";
-                       $lines = @file(get_filename(encode($vars["refer"])));
-                       $begin_select.= "³«»Ï¹Ô:<br /><select name=\"begin\" size=\"10\">\n";
-                       for($i=0;$i<count($lines);$i++)
-                       {
-                               $lines[$i] = mb_strimwidth($lines[$i],0,MAX_LEN,"...");
-                               
-                               if($i==0) $tag = "selected=\"selected\"";
-                               else      $tag = "";
-                               $begin_select.= "<option value=\"$i\" $tag>$lines[$i]</option>\n";
-                       }
-                       $begin_select.= "</select><br />\n<br />\n";
-                       
-                       $end_select.= "½ªÎ»¹Ô:<br /><select name=\"end\" size=\"10\">\n";
-                       for($i=0;$i<count($lines);$i++)
-                       {
-                               if($i==count($lines)-1) $tag = "selected=\"selected\"";
-                               else                    $tag = "";
-                               $end_select.= "<option value=\"$i\" $tag>$lines[$i]</option>\n";
-                       }
-                       $end_select.= "</select><br />\n<br />\n";
-                       
-                       
-                       /*
-                       $select = "";
-                       $lines = @file(get_filename(encode($vars["refer"])));
-                       $select.= "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" border=\"0\">\n";
-                       $select.= "<tr><td width=\"40\" style=\"background-color:#ddeeff\">³«»Ï</td><td width=\"40\" style=\"background-color:#ddeeff\">½ªÎ»</td><td style=\"background-color:#ddeeff\">&nbsp;</td></tr>\n";
-                       
-                       for($i=0;$i<count($lines);$i++)
-                       {
-                               //$lines[$i] = mb_strimwidth($lines[$i],0,MAX_LEN,"...");
-                               
-                               if($i==0)
-                               {
-                                       $begin_tag = "checked=\"checked\"";
-                                       $end_tag = "";
-                               }
-                               else if($i==count($lines)-1)
-                               {
-                                       $begin_tag = "";
-                                       $end_tag = "checked=\"checked\"";
-                               }
-                               else
-                               {
-                                       $begin_tag = "";
-                                       $end_tag = "";
-                               }
-                               
-                               if($i%2) $color = "style=\"background-color:#f0fffa\"";
-                               else     $color = "";
-                               $select.= "<tr>";
-                               $select.= "<td $color>";
-                               $select.= "<input type=\"radio\" name=\"begin\" value=\"$i\" $begin_tag />\n";
-                               $select.= "</td><td $color>";
-                               $select.= "<input type=\"radio\" name=\"end\" value=\"$i\" $end_tag />\n";
-                               $select.= "</td><td $color>";
-                               $select.= "$lines[$i]";
-                               $select.= "</td>";
-                               $select.= "</tr>";
-                       }
-                       $select.= "</table><br />\n";
-                       */
-               }
-               
-               $ret.= "<form action=\"$script\" method=\"post\">\n";
-               $ret.= "<div>\n";
-               $ret.= "<input type=\"hidden\" name=\"plugin\" value=\"template\" />\n";
-               $ret.= "<input type=\"hidden\" name=\"page\" value=\"$vars[refer]\" />\n";
-               //$ret.= "¥Ú¡¼¥¸Ì¾: <input type=\"text\" name=\"refer\" value=\"$vars[refer]/Ê£À½\" />\n";
-               //$ret.= "<input type=\"submit\" name=\"submit\" value=\"ºîÀ®\" /><br />\n<br />\n";
-               $ret.= $begin_select;
-               $ret.= $end_select;
-               //$ret.= $select;
-               $ret.= "¥Ú¡¼¥¸Ì¾: <input type=\"text\" name=\"refer\" value=\"$vars[refer]/Ê£À½\" />\n";
-               $ret.= "<input type=\"submit\" name=\"submit\" value=\"ºîÀ®\" />\n";
-               $ret.= "</div>\n";
-               $ret.= "</form>\n";
-               
-               $retvar["msg"] = "$1 ¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¤·¤ÆºîÀ®";
-               $retvar["body"] = $ret;
-               
+               $postdata = join('',array_splice($lines,$begin,$end - $begin + 1));
+               $retvar['msg'] = $_title_edit;
+               $retvar['body'] = edit_form($vars['page'],$postdata);
+               $vars['refer'] = $vars['page'];
                return $retvar;
        }
+       $begin_select = $end_select = '';
+       for ($i = 0; $i < count($lines); $i++)
+       {
+               $line = htmlspecialchars(mb_strimwidth($lines[$i],0,MAX_LEN,'...'));
+
+               $tag = ($i == $begin) ? ' selected="selected"' : '';
+               $begin_select .= "<option value=\"$i\"$tag>$line</option>\n";
+
+               $tag = ($i == $end) ? ' selected="selected"' : '';
+               $end_select .= "<option value=\"$i\"$tag>$line</option>\n";
+       }
+
+       $_page = htmlspecialchars($page);
+       $msg = $tag = '';
+       if ($is_page)
+       {
+               $msg = $_err_template_already;
+               $tag = '<input type="checkbox" name="force" value="1" />'.$_msg_template_force;
+       }
+       else if ($page != '' and !$is_pagename)
+       {
+               $msg = str_replace('$1',$_page,$_err_template_invalid);
+       }
+
+       $s_refer = htmlspecialchars($vars['refer']);
+       $s_page = ($page == '') ? str_replace('$1',$s_refer,$_msg_template_page) : $_page;
+       $ret = <<<EOD
+<form action="$script" method="post">
+ <div>
+  <input type="hidden" name="plugin" value="template" />
+  <input type="hidden" name="refer" value="$s_refer" />
+  $_msg_template_start <select name="begin" size="10">$begin_select</select><br /><br />
+  $_msg_template_end <select name="end" size="10">$end_select</select><br /><br />
+  $_msg_template_refer <input type="text" name="page" value="$s_page" />
+  <input type="submit" name="submit" value="$_btn_template_create" /> $tag
+ </div>
+</form>
+EOD;
+
+       $retvar['msg'] = ($msg == '') ? $_title_template : $msg;
+       $retvar['body'] = $ret;
 
+       return $retvar;
 }
 ?>