OSDN Git Service

BugTrack/791: Fix typo 0,91 => 0.91
[pukiwiki/pukiwiki.git] / plugin / template.inc.php
1 <?php
2 // $Id: template.inc.php,v 1.20 2005/01/23 08:25:16 henoheno Exp $
3 //
4 // Load template plugin
5
6 define('MAX_LEN', 60);
7
8 function plugin_template_action()
9 {
10         global $script, $vars;
11         global $_title_edit;
12         global $_msg_template_start, $_msg_template_end, $_msg_template_page, $_msg_template_refer;
13         global $_btn_template_create, $_title_template;
14         global $_err_template_already, $_err_template_invalid, $_msg_template_force;
15
16         if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
17         if (! isset($vars['refer']) || ! is_page($vars['refer']))
18                 return FALSE;
19
20         $lines = get_source($vars['refer']);
21
22         // Remove '#freeze'
23         if (! empty($lines) && strtolower(rtrim($lines[0])) == '#freeze')
24                 array_shift($lines);
25
26         $begin = (isset($vars['begin']) && is_numeric($vars['begin'])) ? $vars['begin'] : 0;
27         $end   = (isset($vars['end'])   && is_numeric($vars['end']))   ? $vars['end'] : count($lines) - 1;
28         if ($begin > $end) {
29                 $temp  = $begin;
30                 $begin = $end;
31                 $end   = $temp;
32         }
33         $page    = isset($vars['page']) ? $vars['page'] : '';
34         $is_page = is_page($page);
35
36         // edit
37         if ($is_pagename = is_pagename($page) && (! $is_page || ! empty($vars['force']))) {
38                 $postdata       = join('', array_splice($lines, $begin, $end - $begin + 1));
39                 $retvar['msg']  = $_title_edit;
40                 $retvar['body'] = edit_form($vars['page'], $postdata);
41                 $vars['refer']  = $vars['page'];
42                 return $retvar;
43         }
44         $begin_select = $end_select = '';
45         for ($i = 0; $i < count($lines); $i++) {
46                 $line = htmlspecialchars(mb_strimwidth($lines[$i], 0, MAX_LEN, '...'));
47
48                 $tag = ($i == $begin) ? ' selected="selected"' : '';
49                 $begin_select .= "<option value=\"$i\"$tag>$line</option>\n";
50
51                 $tag = ($i == $end) ? ' selected="selected"' : '';
52                 $end_select .= "<option value=\"$i\"$tag>$line</option>\n";
53         }
54
55         $_page = htmlspecialchars($page);
56         $msg = $tag = '';
57         if ($is_page) {
58                 $msg = $_err_template_already;
59                 $tag = '<input type="checkbox" name="force" value="1" />'.$_msg_template_force;
60         } else if ($page != '' && ! $is_pagename) {
61                 $msg = str_replace('$1', $_page, $_err_template_invalid);
62         }
63
64         $s_refer = htmlspecialchars($vars['refer']);
65         $s_page  = ($page == '') ? str_replace('$1', $s_refer, $_msg_template_page) : $_page;
66         $ret     = <<<EOD
67 <form action="$script" method="post">
68  <div>
69   <input type="hidden" name="plugin" value="template" />
70   <input type="hidden" name="refer"  value="$s_refer" />
71   $_msg_template_start <select name="begin" size="10">$begin_select</select><br /><br />
72   $_msg_template_end   <select name="end"   size="10">$end_select</select><br /><br />
73   $_msg_template_refer <input type="text" name="page" value="$s_page" />
74   <input type="submit" name="submit" value="$_btn_template_create" /> $tag
75  </div>
76 </form>
77 EOD;
78
79         $retvar['msg']  = ($msg == '') ? $_title_template : $msg;
80         $retvar['body'] = $ret;
81
82         return $retvar;
83 }
84 ?>