OSDN Git Service

Try new method #ref(pagename/filename)
[pukiwiki/pukiwiki.git] / plugin / edit.inc.php
1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: edit.inc.php,v 1.15 2004/07/31 03:09:20 henoheno Exp $
6 //
7
8 // ÊÔ½¸
9 // cmd=edit
10 function plugin_edit_action()
11 {
12         global $vars, $_title_edit;
13
14         $page = isset($vars['page']) ? $vars['page'] : '';
15
16         check_editable($page, true, true);
17
18         if (isset($vars['preview']) or isset($vars['template'])) {
19                 return plugin_edit_preview();
20         } else if (isset($vars['write'])) {
21                 return plugin_edit_write();
22         }
23
24         $postdata = @join('', get_source($page));
25         if ($postdata == '') {
26                 $postdata = auto_template($page);
27         }
28
29         return array('msg'=>$_title_edit, 'body'=>edit_form($page, $postdata));
30 }
31
32 // ¥×¥ì¥Ó¥å¡¼
33 function plugin_edit_preview()
34 {
35         global $script, $vars;
36         global $_title_preview, $_msg_preview, $_msg_preview_delete;
37
38         $page = isset($vars['page']) ? $vars['page'] : '';
39
40         if (isset($vars['template_page']) && is_page($vars['template_page'])) {
41
42                 $vars['msg'] = join('', get_source($vars['template_page']));
43
44                 // ¸«½Ð¤·¤Î¸ÇÍ­IDÉô¤òºï½ü
45                 $vars['msg'] = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m', '$1$2', $vars['msg']);
46         }
47
48         // ¼ê½ñ¤­¤Î#freeze¤òºï½ü
49         $vars['msg'] = preg_replace('/^#freeze\s*$/m', '' ,$vars['msg']);
50         $postdata = $vars['msg'];
51
52         if (isset($vars['add']) && $vars['add']) {
53                 if (isset($vars['add_top']) && $vars['add_top']) {
54                         $postdata  = $postdata . "\n\n" . @join('', get_source($page));
55                 } else {
56                         $postdata  = @join('', get_source($page)) . "\n\n" . $postdata;
57                 }
58         }
59
60         $body = "$_msg_preview<br />\n";
61         if ($postdata == '')
62                 $body .= "<strong>$_msg_preview_delete</strong>";
63         $body .= "<br />\n";
64
65         if ($postdata) {
66                 $postdata = make_str_rules($postdata);
67                 $postdata = explode("\n", $postdata);
68                 $postdata = drop_submit(convert_html($postdata));
69                 $body .= '<div id="preview">' . $postdata . '</div>' . "\n";
70         }
71         $body .= edit_form($page, $vars['msg'], $vars['digest'], FALSE);
72
73         return array('msg'=>$_title_preview, 'body'=>$body);
74 }
75
76 // ½ñ¤­¹þ¤ß¤â¤·¤¯¤ÏÄɲä⤷¤¯¤Ï¥³¥á¥ó¥È¤ÎÁÞÆþ
77 function plugin_edit_write()
78 {
79         global $script, $vars;
80         global $_title_collided, $_msg_collided_auto, $_msg_collided, $_title_deleted;
81
82         $page = isset($vars['page']) ? $vars['page'] : '';
83         $retvars = array();
84
85         // ¼ê½ñ¤­¤Î#freeze¤òºï½ü
86         $vars['msg'] = preg_replace('/^#freeze\s*$/m','',$vars['msg']);
87         $postdata = $postdata_input = $vars['msg'];
88
89         if (isset($vars['add']) && $vars['add']) {
90                 if (isset($vars['add_top']) && $vars['add_top']) {
91                         $postdata  = $postdata . "\n\n" . @join('', get_source($page));
92                 } else {
93                         $postdata  = @join('', get_source($page)) . "\n\n" . $postdata;
94                 }
95         }
96
97         $oldpagesrc = join('', get_source($page));
98         $oldpagemd5 = md5($oldpagesrc);
99
100         if (! isset($vars['digest']) || $vars['digest'] != $oldpagemd5) {
101                 $vars['digest'] = $oldpagemd5;
102
103                 $retvars['msg'] = $_title_collided;
104                 list($postdata_input, $auto) = do_update_diff($oldpagesrc, $postdata_input, $vars['original']);
105
106                 $retvars['body'] = ($auto ? $_msg_collided_auto : $_msg_collided)."\n";
107
108                 if (TRUE) {
109                         global $do_update_diff_table;
110                         $retvars['body'] .= $do_update_diff_table;
111                 }
112
113                 $retvars['body'] .= edit_form($page, $postdata_input, $oldpagemd5, FALSE);
114         }
115         else {
116                 $notimestamp = (isset($vars['notimestamp']) && $vars['notimestamp'] != '');
117                 page_write($page, $postdata, $notimestamp);
118
119                 if ($postdata) {
120                         header("Location: $script?" . rawurlencode($page));
121                         exit;
122                 }
123
124                 $retvars['msg'] = $_title_deleted;
125                 $retvars['body'] = str_replace('$1', htmlspecialchars($page), $_title_deleted);
126                 tb_delete($page);
127         }
128
129         return $retvars;
130 }
131
132 ?>