2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: edit.inc.php,v 1.17 2004/10/09 08:25:29 henoheno Exp $
10 function plugin_edit_action()
12 global $vars, $_title_edit, $load_template_func;
14 $page = isset($vars['page']) ? $vars['page'] : '';
16 check_editable($page, true, true);
18 if (isset($vars['preview']) || ($load_template_func && 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 $page = isset($vars['page']) ? $vars['page'] : '';
41 if (isset($vars['template_page']) && is_page($vars['template_page'])) {
43 $vars['msg'] = join('', get_source($vars['template_page']));
45 // ¸«½Ð¤·¤Î¸ÇÍIDÉô¤òºï½ü
46 $vars['msg'] = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m', '$1$2', $vars['msg']);
49 // ¼ê½ñ¤¤Î#freeze¤òºï½ü
50 $vars['msg'] = preg_replace('/^#freeze\s*$/im', '' ,$vars['msg']);
51 $postdata = $vars['msg'];
53 if (isset($vars['add']) && $vars['add']) {
54 if (isset($vars['add_top']) && $vars['add_top']) {
55 $postdata = $postdata . "\n\n" . @join('', get_source($page));
57 $postdata = @join('', get_source($page)) . "\n\n" . $postdata;
61 $body = "$_msg_preview<br />\n";
63 $body .= "<strong>$_msg_preview_delete</strong>";
67 $postdata = make_str_rules($postdata);
68 $postdata = explode("\n", $postdata);
69 $postdata = drop_submit(convert_html($postdata));
70 $body .= '<div id="preview">' . $postdata . '</div>' . "\n";
72 $body .= edit_form($page, $vars['msg'], $vars['digest'], FALSE);
74 return array('msg'=>$_title_preview, 'body'=>$body);
77 // ½ñ¤¹þ¤ß¤â¤·¤¯¤ÏÄɲä⤷¤¯¤Ï¥³¥á¥ó¥È¤ÎÁÞÆþ
78 function plugin_edit_write()
80 global $script, $vars;
81 global $_title_collided, $_msg_collided_auto, $_msg_collided, $_title_deleted;
83 $page = isset($vars['page']) ? $vars['page'] : '';
86 // ¼ê½ñ¤¤Î#freeze¤òºï½ü
87 $vars['msg'] = preg_replace('/^#freeze\s*$/im','',$vars['msg']);
88 $postdata = $postdata_input = $vars['msg'];
90 if (isset($vars['add']) && $vars['add']) {
91 if (isset($vars['add_top']) && $vars['add_top']) {
92 $postdata = $postdata . "\n\n" . @join('', get_source($page));
94 $postdata = @join('', get_source($page)) . "\n\n" . $postdata;
98 $oldpagesrc = join('', get_source($page));
99 $oldpagemd5 = md5($oldpagesrc);
101 if (! isset($vars['digest']) || $vars['digest'] != $oldpagemd5) {
102 $vars['digest'] = $oldpagemd5;
104 $retvars['msg'] = $_title_collided;
105 list($postdata_input, $auto) = do_update_diff($oldpagesrc, $postdata_input, $vars['original']);
107 $retvars['body'] = ($auto ? $_msg_collided_auto : $_msg_collided)."\n";
110 global $do_update_diff_table;
111 $retvars['body'] .= $do_update_diff_table;
114 $retvars['body'] .= edit_form($page, $postdata_input, $oldpagemd5, FALSE);
117 $notimestamp = (isset($vars['notimestamp']) && $vars['notimestamp'] != '');
118 page_write($page, $postdata, $notimestamp);
121 header("Location: $script?" . rawurlencode($page));
125 $retvars['msg'] = $_title_deleted;
126 $retvars['body'] = str_replace('$1', htmlspecialchars($page), $_title_deleted);