2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: edit.inc.php,v 1.12 2004/07/02 12:47:48 henoheno Exp $
10 function plugin_edit_action()
12 global $vars, $_title_edit;
14 $page = isset($vars['page']) ? $vars['page'] : '';
16 check_editable($page, true, true);
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();
24 $postdata = @join('', get_source($page));
25 if ($postdata == '') {
26 $postdata = auto_template($page);
29 return array('msg'=>$_title_edit, 'body'=>edit_form($page, $postdata));
33 function plugin_edit_preview()
36 global $_title_preview,$_msg_preview,$_msg_preview_delete;
38 if (array_key_exists('template_page',$post) and is_page($post['template_page']))
40 $post['msg'] = join('',get_source($post['template_page']));
41 // ¸«½Ð¤·¤Î¸ÇÍIDÉô¤òºï½ü
42 $post['msg'] = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m','$1$2',$post['msg']);
45 // ¼ê½ñ¤¤Î#freeze¤òºï½ü
46 $post['msg'] = preg_replace('/^#freeze\s*$/m','',$post['msg']);
48 if (!empty($post['add']))
52 $postdata = $post['msg']."\n\n".@join('',get_source($post['page']));
56 $postdata = @join('',get_source($post['page']))."\n\n".$post['msg'];
61 $postdata = $post['msg'];
64 $body = "$_msg_preview<br />\n";
67 $body .= "<strong>$_msg_preview_delete</strong>";
73 $postdata = make_str_rules($postdata);
74 $postdata = explode("\n",$postdata);
75 $postdata = drop_submit(convert_html($postdata));
83 $body .= edit_form($post['page'],$post['msg'],$post['digest'],FALSE);
85 return array('msg'=>$_title_preview,'body'=>$body);
88 // ½ñ¤¹þ¤ß¤â¤·¤¯¤ÏÄɲä⤷¤¯¤Ï¥³¥á¥ó¥È¤ÎÁÞÆþ
89 function plugin_edit_write()
91 global $script,$post,$vars;
92 global $_title_collided,$_msg_collided_auto,$_msg_collided,$_title_deleted;
96 // ¼ê½ñ¤¤Î#freeze¤òºï½ü
97 $post['msg'] = preg_replace('/^#freeze\s*$/m','',$post['msg']);
99 $postdata_input = $post['msg'];
101 if (!empty($post['add'])) {
102 if (!empty($post['add_top'])) {
103 $postdata = $post['msg'];
105 $postdata .= @join('',get_source($post['page']));
108 $postdata = @join('',get_source($post['page']));
110 $postdata .= $post['msg'];
114 $postdata = $post['msg'];
117 $oldpagesrc = join('',get_source($post['page']));
118 $oldpagemd5 = md5($oldpagesrc);
120 if ($oldpagemd5 != $post['digest']) {
121 $retvars['msg'] = $_title_collided;
123 $post['digest'] = $vars['digest'] = $oldpagemd5;
124 list($postdata_input,$auto) = do_update_diff($oldpagesrc,$postdata_input,$post['original']);
126 $retvars['body'] = ($auto ? $_msg_collided_auto : $_msg_collided)."\n";
129 global $do_update_diff_table;
130 $retvars['body'] .= $do_update_diff_table;
133 $retvars['body'] .= edit_form($post['page'],$postdata_input,$oldpagemd5,FALSE);
136 $notimestamp = !empty($post['notimestamp']);
137 page_write($post['page'],$postdata,$notimestamp);
139 if ($postdata != '') {
140 header("Location: $script?".rawurlencode($post['page']));
144 $retvars['msg'] = $_title_deleted;
145 $retvars['body'] = str_replace('$1',htmlspecialchars($post['page']),$_title_deleted);
146 tb_delete($post['page']);