自作プラグイン/plugin_comment.patch
の編集
Top
/
自作プラグイン
/
plugin_comment.patch
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
Wikiを試したい方へ:
「この」Wikiは、
PukiWiki
のための公式Wikiです。
テスト書き込みなどは
お試しサイト
https://pukiwiki.osdn.jp/_trial/
をご利用ください
** plugin_comment.patch [#AboutPlugin] |RIGHT:125|LEFT:360|c |~サマリ|comment.inc.phpの機能を拡張する| |~リビジョン|2.0| |~対応バージョン|1.5 (branch_r1_5)| |~投稿者|[[NoName]]| |~投稿日|&new{2016-01-16 (土) 14:06:49};| 標準のcomment.inc.phpの機能を拡張します diff形式なのでpatchコマンドもしくは手動で書き換えてください。 commentプラグインに名前の入力を強制する forcename オプションを追加します ついでにコメント無しで投稿した場合にもエラー文を出すようにしました 従来の noname オプションと併用した場合は noname の方を優先して名前は必要ありません --- ./plugin.org/comment.inc.php 2016-01-11 01:22:46.000000000 +0900 +++ ./plugin/comment.inc.php 2016-01-20 16:35:39.744467900 +0900 @@ -25,20 +25,37 @@ function plugin_comment_action() if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing'); - if (! isset($vars['msg'])) return array('msg'=>'', 'body'=>''); // Do nothing + $vars['page'] = $vars['refer']; + $_num = '#'.$vars['comment_no']; + $vars['_error'][$_num] = 'コメントがありません'; + $vars['_name'][$_num] = $vars['name']; + $vars['_msg'][$_num] = $vars['msg']; + - $vars['msg'] = str_replace("\n", '', $vars['msg']); // Cut LFs + if (! isset($vars['_msg'][$_num])) return array('msg'=>'', 'body'=>''); // Do nothing + + $vars['_msg'][$_num] = str_replace("\n", '', $vars['_msg'][$_num]); // Cut LFs $head = ''; $match = array(); - if (preg_match('/^(-{1,2})-*\s*(.*)/', $vars['msg'], $match)) { + if (preg_match('/^(-{1,2})-*\s*(.*)/', $vars['_msg'][$_num], $match)) { $head = & $match[1]; - $vars['msg'] = & $match[2]; + $vars['_msg'][$_num] = & $match[2]; } - if ($vars['msg'] == '') return array('msg'=>'', 'body'=>''); // Do nothing + if ($vars['_msg'][$_num] == '') return array('msg'=>'', 'body'=>''); // Do nothing + + $vars['_error'][$_num] = '「お名前」の入力をおねがいします'; - $comment = str_replace('$msg', $vars['msg'], PLUGIN_COMMENT_FORMAT_MSG); - if(isset($vars['name']) || ($vars['nodate'] != '1')) { - $_name = (! isset($vars['name']) || $vars['name'] == '') ? $_no_name : $vars['name']; + $comment = str_replace('$msg', $vars['_msg'][$_num], PLUGIN_COMMENT_FORMAT_MSG); + if(isset($vars['_name'][$_num]) || ($vars['nodate'] != '1')) { + $_name = (! isset($vars['_name'][$_num]) || $vars['_name'][$_num] == '') ? $_no_name : $vars['name']; + if ($vars['forcename'] && $_name == $_no_name) { + $vars['_msg'][$_num] = htmlsc($vars['_msg'][$_num]); + return array('msg'=>'', 'body'=>''); + } else { + $vars['_error'][$_num] = ''; + $vars['_msg'][$_num] = ''; + $vars['_name'][$_num] = $vars['forcename'] ? $_name : ''; + } $_name = ($_name == '') ? '' : str_replace('$name', $_name, PLUGIN_COMMENT_FORMAT_NAME); $_now = ($vars['nodate'] == '1') ? '' : str_replace('$now', $now, PLUGIN_COMMENT_FORMAT_NOW); @@ -78,8 +95,6 @@ function plugin_comment_action() $retvars['msg'] = $title; $retvars['body'] = $body; - $vars['page'] = $vars['refer']; - return $retvars; } @@ -94,6 +109,10 @@ function plugin_comment_convert() if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0; $comment_no = $numbers[$vars['page']]++; + $_name = $vars['_name']['#'.$comment_no]; + $_msg = $vars['_msg']['#'.$comment_no]; + $_error = $vars['_error']['#'.$comment_no]; + $options = func_num_args() ? func_get_args() : array(); if (in_array('noname', $options)) { $nametags = '<label for="_p_comment_comment_' . $comment_no . '">' . @@ -103,31 +122,39 @@ function plugin_comment_convert() $_btn_name . '</label>' . '<input type="text" name="name" id="_p_comment_name_' . $comment_no . '" size="' . PLUGIN_COMMENT_SIZE_NAME . + '" value="'.htmlsc($_name). '" />' . "\n"; } + $forcename = (in_array('forcename', $options) && !in_array('noname', $options))? '1' : '0'; $nodate = in_array('nodate', $options) ? '1' : '0'; $above = in_array('above', $options) ? '1' : (in_array('below', $options) ? '0' : PLUGIN_COMMENT_DIRECTION_DEFAULT); $script = get_script_uri(); $s_page = htmlsc($vars['page']); + $_error = $_error ? "<p> ERROR: ".htmlsc($_error)."</p>" : ""; $string = <<<EOD <br /> -<form action="$script" method="post"> +<form action="$script?cmd=comment&refer=$s_page" method="post"> <div> + <!-- <input type="hidden" name="plugin" value="comment" /> <input type="hidden" name="refer" value="$s_page" /> + --> <input type="hidden" name="comment_no" value="$comment_no" /> + <input type="hidden" name="forcename" value="$forcename" /> <input type="hidden" name="nodate" value="$nodate" /> <input type="hidden" name="above" value="$above" /> <input type="hidden" name="digest" value="$digest" /> + $_error $nametags - <input type="text" name="msg" id="_p_comment_comment_{$comment_no}" size="$comment_cols" /> + <input type="text" name="msg" id="_p_comment_comment_{$comment_no}" size="$comment_cols" value="{$_msg}" /> <input type="submit" name="comment" value="$_btn_comment" /> </div> </form> EOD; + $_name = $_msg = $_error = ''; return $string; } ?> ** バグなど [#BugReport] - 複数実行したときにエラー文がおかしくなる問題を修正 -- &new{2016-01-20 (水) 16:40:21}; #comment(noname,above)
** plugin_comment.patch [#AboutPlugin] |RIGHT:125|LEFT:360|c |~サマリ|comment.inc.phpの機能を拡張する| |~リビジョン|2.0| |~対応バージョン|1.5 (branch_r1_5)| |~投稿者|[[NoName]]| |~投稿日|&new{2016-01-16 (土) 14:06:49};| 標準のcomment.inc.phpの機能を拡張します diff形式なのでpatchコマンドもしくは手動で書き換えてください。 commentプラグインに名前の入力を強制する forcename オプションを追加します ついでにコメント無しで投稿した場合にもエラー文を出すようにしました 従来の noname オプションと併用した場合は noname の方を優先して名前は必要ありません --- ./plugin.org/comment.inc.php 2016-01-11 01:22:46.000000000 +0900 +++ ./plugin/comment.inc.php 2016-01-20 16:35:39.744467900 +0900 @@ -25,20 +25,37 @@ function plugin_comment_action() if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing'); - if (! isset($vars['msg'])) return array('msg'=>'', 'body'=>''); // Do nothing + $vars['page'] = $vars['refer']; + $_num = '#'.$vars['comment_no']; + $vars['_error'][$_num] = 'コメントがありません'; + $vars['_name'][$_num] = $vars['name']; + $vars['_msg'][$_num] = $vars['msg']; + - $vars['msg'] = str_replace("\n", '', $vars['msg']); // Cut LFs + if (! isset($vars['_msg'][$_num])) return array('msg'=>'', 'body'=>''); // Do nothing + + $vars['_msg'][$_num] = str_replace("\n", '', $vars['_msg'][$_num]); // Cut LFs $head = ''; $match = array(); - if (preg_match('/^(-{1,2})-*\s*(.*)/', $vars['msg'], $match)) { + if (preg_match('/^(-{1,2})-*\s*(.*)/', $vars['_msg'][$_num], $match)) { $head = & $match[1]; - $vars['msg'] = & $match[2]; + $vars['_msg'][$_num] = & $match[2]; } - if ($vars['msg'] == '') return array('msg'=>'', 'body'=>''); // Do nothing + if ($vars['_msg'][$_num] == '') return array('msg'=>'', 'body'=>''); // Do nothing + + $vars['_error'][$_num] = '「お名前」の入力をおねがいします'; - $comment = str_replace('$msg', $vars['msg'], PLUGIN_COMMENT_FORMAT_MSG); - if(isset($vars['name']) || ($vars['nodate'] != '1')) { - $_name = (! isset($vars['name']) || $vars['name'] == '') ? $_no_name : $vars['name']; + $comment = str_replace('$msg', $vars['_msg'][$_num], PLUGIN_COMMENT_FORMAT_MSG); + if(isset($vars['_name'][$_num]) || ($vars['nodate'] != '1')) { + $_name = (! isset($vars['_name'][$_num]) || $vars['_name'][$_num] == '') ? $_no_name : $vars['name']; + if ($vars['forcename'] && $_name == $_no_name) { + $vars['_msg'][$_num] = htmlsc($vars['_msg'][$_num]); + return array('msg'=>'', 'body'=>''); + } else { + $vars['_error'][$_num] = ''; + $vars['_msg'][$_num] = ''; + $vars['_name'][$_num] = $vars['forcename'] ? $_name : ''; + } $_name = ($_name == '') ? '' : str_replace('$name', $_name, PLUGIN_COMMENT_FORMAT_NAME); $_now = ($vars['nodate'] == '1') ? '' : str_replace('$now', $now, PLUGIN_COMMENT_FORMAT_NOW); @@ -78,8 +95,6 @@ function plugin_comment_action() $retvars['msg'] = $title; $retvars['body'] = $body; - $vars['page'] = $vars['refer']; - return $retvars; } @@ -94,6 +109,10 @@ function plugin_comment_convert() if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0; $comment_no = $numbers[$vars['page']]++; + $_name = $vars['_name']['#'.$comment_no]; + $_msg = $vars['_msg']['#'.$comment_no]; + $_error = $vars['_error']['#'.$comment_no]; + $options = func_num_args() ? func_get_args() : array(); if (in_array('noname', $options)) { $nametags = '<label for="_p_comment_comment_' . $comment_no . '">' . @@ -103,31 +122,39 @@ function plugin_comment_convert() $_btn_name . '</label>' . '<input type="text" name="name" id="_p_comment_name_' . $comment_no . '" size="' . PLUGIN_COMMENT_SIZE_NAME . + '" value="'.htmlsc($_name). '" />' . "\n"; } + $forcename = (in_array('forcename', $options) && !in_array('noname', $options))? '1' : '0'; $nodate = in_array('nodate', $options) ? '1' : '0'; $above = in_array('above', $options) ? '1' : (in_array('below', $options) ? '0' : PLUGIN_COMMENT_DIRECTION_DEFAULT); $script = get_script_uri(); $s_page = htmlsc($vars['page']); + $_error = $_error ? "<p> ERROR: ".htmlsc($_error)."</p>" : ""; $string = <<<EOD <br /> -<form action="$script" method="post"> +<form action="$script?cmd=comment&refer=$s_page" method="post"> <div> + <!-- <input type="hidden" name="plugin" value="comment" /> <input type="hidden" name="refer" value="$s_page" /> + --> <input type="hidden" name="comment_no" value="$comment_no" /> + <input type="hidden" name="forcename" value="$forcename" /> <input type="hidden" name="nodate" value="$nodate" /> <input type="hidden" name="above" value="$above" /> <input type="hidden" name="digest" value="$digest" /> + $_error $nametags - <input type="text" name="msg" id="_p_comment_comment_{$comment_no}" size="$comment_cols" /> + <input type="text" name="msg" id="_p_comment_comment_{$comment_no}" size="$comment_cols" value="{$_msg}" /> <input type="submit" name="comment" value="$_btn_comment" /> </div> </form> EOD; + $_name = $_msg = $_error = ''; return $string; } ?> ** バグなど [#BugReport] - 複数実行したときにエラー文がおかしくなる問題を修正 -- &new{2016-01-20 (水) 16:40:21}; #comment(noname,above)
テキスト整形のルールを表示する