開始行: &tag(カスタマイズ,プラグイン改造); #title(【PukiWiki】renameプラグインを改造して管理者以外で... #contentsx *変更箇所のまとめ [#s00080eb] -alias.inc.phpの導入 -管理者以外でもページ名の変更をできるようにする。 *変更の詳細 [#s25e95d6] **alias.inc.phpの導入 [#alias] [[alias.inc.php>Pukiwikiカスタマイズ#add_alias]]の導入に... #prism(diff-php diff-highlight){{ function plugin_rename_get_files($pages) { @@ -305,6 +305,7 @@ $dirs = array(BACKUP_DIR, DIFF_DIR, DATA_DIR); if (exist_plugin_convert('attach')) $dirs[] = UPLOAD_D... if (exist_plugin_convert('counter')) $dirs[] = COUNTER_... + if (exist_plugin_convert('alias')) $dirs[] = ALIAS_DATA... // and more ... $matches = array(); }} **管理者以外でもページ名の変更をできるようにする [#jce687... 利用者から多く要望があったため、管理者以外でもページ名の... ***主な仕様 [#b58c9e2a] -ゲストパスを設定して、パスワードとして使えるようにする。 -変更履歴の記録ページを":RenameLog"から"RenameLog"に変更。 --ゲストパスの場合はRecentChangesに記録して変更したことを... --管理者パスの場合は今まで通りRecentChangesに記録されない... -編集制限のかかったページや凍結されたページはページ名の変... --編集制限のかかったページの場合は最初にログインを促す。 --凍結されたページはゲストパスだと弾かれるようにする。 ***変更点の詳細 [#pd142f49] まずはゲストパスの設定を追加する。今回はguestをパスに設定... #prism(diff-php diff-highlight){{ -define('PLUGIN_RENAME_LOGPAGE', ':RenameLog'); +define('PLUGIN_RENAME_LOGPAGE', 'RenameLog'); +define('PLUGIN_RENAME_GUESTPASS', 'guest'); }} 記録ページを変更するのは、記録ページをRecentChangesに反映... ︙ 次に実際の動作を変更していく。 最初にページ名変更ボタンを押した時点で編集制限がかかって... #prism(diff-php diff-highlight){{ function plugin_rename_action() { global $whatsnew; if (PKWK_READONLY) die_message('PKWK_READONLY prohibits... + edit_auth(plugin_rename_getvar('refer'), true, true); $method = plugin_rename_getvar('method'); if ($method == 'regex') { }} ここでcheck_editableではなくedit_authを選択しているのは、... パスワード要求の処理が最初にあればedit_authとis_freezeの... ︙ 気を取り直し、次はゲストと管理者で処理を分けていく。 #prism(diff-php diff-highlight){{ $exists[$_page][$old] = $new; $pass = plugin_rename_getvar('pass'); - if ($pass != '' && pkwk_login($pass)) { - return plugin_rename_proceed($pages, $files, $exists); - } else if ($pass != '') { + $is_admin = pkwk_login($pass); + $is_guest = ($pass == PLUGIN_RENAME_GUESTPASS); + $refer = plugin_rename_getvar('refer'); + if ($pass != '' ) { + switch (true) { + case ($is_guest): + check_editable($refer); + case ($is_admin): + return plugin_rename_proceed($pages, $files, $exists... + break; + default: $msg = plugin_rename_err('adminpass'); } + } $method = plugin_rename_getvar('method'); if ($method == 'regex') { }} 入力されたパスワードが上で設定したゲストパスと一致する場... 余談だが、switch(true)というコードの使い方には賛否あるら... ︙ これは必須の変更ではないが、一応ゲストパスがあることを利... #prism(diff-php diff-highlight){{ <input type="submit" value="{$_rename_messages['btn_su... </div> </form> +<p>管理者以外の方は"guest"と入力することでページ名を変更... <p>{$_rename_messages['msg_confirm']}</p> EOD; }} 最後に実際のページ名変更処理で管理者判定を受け取り、管理... #prism(diff-php diff-highlight){{ return $files; } -function plugin_rename_proceed($pages, $files, $exists) +function plugin_rename_proceed($pages, $files, $exists, ... { global $now, $_rename_messages; #prism(diff-php diff-highlight){{ // 更新の衝突はチェックしない。 // ファイルの書き込み - page_write(PLUGIN_RENAME_LOGPAGE, join('', $postdata)); + page_write(PLUGIN_RENAME_LOGPAGE, join('', $postdata), ... // Refresh RecentChanges / Delete cache/recent.dat delete_recent_changes_cache(); }} *ダウンロード [#id3e154f] PukiWiki公式ページでも要望を見かけたので、ページ名変更を... [[GitHub:https://github.com/kanateko/pukiwiki-plugin]] *コメント [#odda96a3] 質問や指摘などあればどうぞ。 ---- #pcomment(reply) 終了行: &tag(カスタマイズ,プラグイン改造); #title(【PukiWiki】renameプラグインを改造して管理者以外で... #contentsx *変更箇所のまとめ [#s00080eb] -alias.inc.phpの導入 -管理者以外でもページ名の変更をできるようにする。 *変更の詳細 [#s25e95d6] **alias.inc.phpの導入 [#alias] [[alias.inc.php>Pukiwikiカスタマイズ#add_alias]]の導入に... #prism(diff-php diff-highlight){{ function plugin_rename_get_files($pages) { @@ -305,6 +305,7 @@ $dirs = array(BACKUP_DIR, DIFF_DIR, DATA_DIR); if (exist_plugin_convert('attach')) $dirs[] = UPLOAD_D... if (exist_plugin_convert('counter')) $dirs[] = COUNTER_... + if (exist_plugin_convert('alias')) $dirs[] = ALIAS_DATA... // and more ... $matches = array(); }} **管理者以外でもページ名の変更をできるようにする [#jce687... 利用者から多く要望があったため、管理者以外でもページ名の... ***主な仕様 [#b58c9e2a] -ゲストパスを設定して、パスワードとして使えるようにする。 -変更履歴の記録ページを":RenameLog"から"RenameLog"に変更。 --ゲストパスの場合はRecentChangesに記録して変更したことを... --管理者パスの場合は今まで通りRecentChangesに記録されない... -編集制限のかかったページや凍結されたページはページ名の変... --編集制限のかかったページの場合は最初にログインを促す。 --凍結されたページはゲストパスだと弾かれるようにする。 ***変更点の詳細 [#pd142f49] まずはゲストパスの設定を追加する。今回はguestをパスに設定... #prism(diff-php diff-highlight){{ -define('PLUGIN_RENAME_LOGPAGE', ':RenameLog'); +define('PLUGIN_RENAME_LOGPAGE', 'RenameLog'); +define('PLUGIN_RENAME_GUESTPASS', 'guest'); }} 記録ページを変更するのは、記録ページをRecentChangesに反映... ︙ 次に実際の動作を変更していく。 最初にページ名変更ボタンを押した時点で編集制限がかかって... #prism(diff-php diff-highlight){{ function plugin_rename_action() { global $whatsnew; if (PKWK_READONLY) die_message('PKWK_READONLY prohibits... + edit_auth(plugin_rename_getvar('refer'), true, true); $method = plugin_rename_getvar('method'); if ($method == 'regex') { }} ここでcheck_editableではなくedit_authを選択しているのは、... パスワード要求の処理が最初にあればedit_authとis_freezeの... ︙ 気を取り直し、次はゲストと管理者で処理を分けていく。 #prism(diff-php diff-highlight){{ $exists[$_page][$old] = $new; $pass = plugin_rename_getvar('pass'); - if ($pass != '' && pkwk_login($pass)) { - return plugin_rename_proceed($pages, $files, $exists); - } else if ($pass != '') { + $is_admin = pkwk_login($pass); + $is_guest = ($pass == PLUGIN_RENAME_GUESTPASS); + $refer = plugin_rename_getvar('refer'); + if ($pass != '' ) { + switch (true) { + case ($is_guest): + check_editable($refer); + case ($is_admin): + return plugin_rename_proceed($pages, $files, $exists... + break; + default: $msg = plugin_rename_err('adminpass'); } + } $method = plugin_rename_getvar('method'); if ($method == 'regex') { }} 入力されたパスワードが上で設定したゲストパスと一致する場... 余談だが、switch(true)というコードの使い方には賛否あるら... ︙ これは必須の変更ではないが、一応ゲストパスがあることを利... #prism(diff-php diff-highlight){{ <input type="submit" value="{$_rename_messages['btn_su... </div> </form> +<p>管理者以外の方は"guest"と入力することでページ名を変更... <p>{$_rename_messages['msg_confirm']}</p> EOD; }} 最後に実際のページ名変更処理で管理者判定を受け取り、管理... #prism(diff-php diff-highlight){{ return $files; } -function plugin_rename_proceed($pages, $files, $exists) +function plugin_rename_proceed($pages, $files, $exists, ... { global $now, $_rename_messages; #prism(diff-php diff-highlight){{ // 更新の衝突はチェックしない。 // ファイルの書き込み - page_write(PLUGIN_RENAME_LOGPAGE, join('', $postdata)); + page_write(PLUGIN_RENAME_LOGPAGE, join('', $postdata), ... // Refresh RecentChanges / Delete cache/recent.dat delete_recent_changes_cache(); }} *ダウンロード [#id3e154f] PukiWiki公式ページでも要望を見かけたので、ページ名変更を... [[GitHub:https://github.com/kanateko/pukiwiki-plugin]] *コメント [#odda96a3] 質問や指摘などあればどうぞ。 ---- #pcomment(reply) ページ名: