$cantedit 関係のまとめ



修正

「システム側が自動的に更新するページ」を保護するための設定 $cantedit (RecentChanges、RecentDeleted などが該当する) に関するコードを集約し、想定されている挙動にそった動作に改める。

メッセージ

unfreeze.inc.php,v 1.10および1.11(CVS)において、PLUGIN_UNFREEZE_EDITを有効にしている場合、凍結解除後に編集フォームを表示していますが、編集可能かどうかのチェックをしていないようです。

これにより

$whatsnew     = 'RecentChanges'; // Modified page list
$whatsdeleted = 'RecentDeleted'; // Removeed page list

の編集フォームが表示されます。(編集結果は保存できません)

そもそもの仕様は?


修正案

func.php/is_cantedit

skinの修正案(分類1)

freeze.inc.phpの修正案(分類2-1) 

unfreeze.inc.phpの修正案(分類2-1) 

rename.inc.phpの修正案(分類2-1)

article.inc.phpの修正案(分類4)

comment.inc.phpの修正案(分類4)

template.inc.php(分類2-2)

template.inc.php,v 1.21
line 8-
 function plugin_template_action()
 {
	global $script, $vars;
	global $_title_edit;
	global $_msg_template_start, $_msg_template_end, $_msg_template_page, $_msg_template_refer;
	global $_btn_template_create, $_title_template;
	global $_err_template_already, $_err_template_invalid, $_msg_template_force;
	if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
-	if (! isset($vars['refer']) || ! is_page($vars['refer']))
+	if (! isset($vars['refer']) || ! is_page($vars['refer']) || is_cantedit($vars['refer']))
		return FALSE;

コメント

navigatorで非表示にするもの
編集,凍結/凍結解除,差分,バックアップ,添付
toolbarで非表示にするもの
編集,凍結/凍結解除,差分,バックアップ,添付,複製,名前変更

*1 今renameの整理中だが、整理すればもう一つパスがつぶせるかもしれない
*2 局所的な回避策ではなく、仕様を再確認し実装するため、一旦、unfreezeの対策は別ページに移動させていただきました。
*3 今まで注目されていなかったので仕方ないけれど、従来のロジックが関数化されていない(構造化プログラミングの初期段階)。また設定の記法が実はhash等のテクニックを使っておらず、内部でそれをそのまま使っていたので、ユーザーには解り易いが性能が良くなく、バランスが悪かった
*4 canteditなページに更新系プラグインを使うこと

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-04-04 (土) 04:39:33
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.336 sec.

SourceForge