2 // PukiWiki - Yet another WikiWikiWeb clone.
4 // Copyright 2002-2017 PukiWiki Development Team
5 // License: GPL v2 or (at your option) any later version
7 // Text inserting box plugin
9 define('INSERT_COLS', 70); // Columns of textarea
10 define('INSERT_ROWS', 5); // Rows of textarea
11 define('INSERT_INS', 1); // Order of insertion (1:before the textarea, 0:after)
13 function plugin_insert_action()
15 global $vars, $cols, $rows;
16 global $_title_collided, $_msg_collided, $_title_updated;
18 $script = get_base_uri();
19 if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
20 if (! isset($vars['msg']) || $vars['msg'] == '') return;
22 $vars['msg'] = preg_replace('/' . "\r" . '/', '', $vars['msg']);
23 $insert = ($vars['msg'] != '') ? "\n" . $vars['msg'] . "\n" : '';
26 $postdata_old = get_source($vars['refer']);
30 foreach($postdata_old as $line) {
31 if (! INSERT_INS) $postdata .= $line;
32 if (preg_match('/^#insert$/i', $line)) {
33 if ($insert_no == $vars['insert_no'])
37 if (INSERT_INS) $postdata .= $line;
40 $postdata_input = $insert . "\n";
43 if (md5(get_source($vars['refer'], TRUE, TRUE)) !== $vars['digest']) {
44 $title = $_title_collided;
45 $body = $_msg_collided . "\n";
47 $s_refer = htmlsc($vars['refer']);
48 $s_digest = htmlsc($vars['digest']);
49 $s_postdata_input = htmlsc($postdata_input);
52 <form action="$script?cmd=preview" method="post">
54 <input type="hidden" name="refer" value="$s_refer" />
55 <input type="hidden" name="digest" value="$s_digest" />
56 <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
61 page_write($vars['refer'], $postdata);
63 $title = $_title_updated;
65 $retvars['msg'] = $title;
66 $retvars['body'] = $body;
68 $vars['page'] = $vars['refer'];
73 function plugin_insert_convert()
75 global $vars, $digest;
77 static $numbers = array();
79 $script = get_base_uri();
80 if (PKWK_READONLY) return ''; // Show nothing
82 if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0;
84 $insert_no = $numbers[$vars['page']]++;
86 $s_page = htmlsc($vars['page']);
87 $s_digest = htmlsc($digest);
88 $s_cols = INSERT_COLS;
89 $s_rows = INSERT_ROWS;
91 <form action="$script" method="post">
93 <input type="hidden" name="insert_no" value="$insert_no" />
94 <input type="hidden" name="refer" value="$s_page" />
95 <input type="hidden" name="plugin" value="insert" />
96 <input type="hidden" name="digest" value="$s_digest" />
97 <textarea name="msg" rows="$s_rows" cols="$s_cols"></textarea><br />
98 <input type="submit" name="insert" value="$_btn_insert" />