pukiwiki
目次
pukiwiki
PHP で書かれた Wiki エンジンの一種。
公式には 1.4.7 から長期にわたってバージョンアップがなされていない。 添付ファイルの扱いが貧弱。 非日本語圏では普及していない。
nishimotz は dokuwiki を使うことが増えたが、pukiwiki も使い続けているので、気づいたことをメモしていくつもり。
PukiWiki Plus! (1.4.7ベースに国際化など)
PHP 5.4対応
github プロジェクト
あまり派生版を作りたくなかったがあまりに混沌としているので作りました
変更点
- 英語リソースを展開
- デフォルトをSAFEモードに
- デフォルトですべてのページの「編集」を Basic 認証に
- pukiwiki.ini.php を $edit_auth = 0; に戻せば解除
- pre.inc.php を追加、#pre ブロック内の http(s) 文字列をハイパーリンク化(不完全なので要修正)
pukiwiki.ini.php
アクセス制限
書き込みのみ Basic 認証をかける pukiwiki.ini.php の例
$auth_users = array( 'foo' => 'foo_passwd', ); $auth_method_type = 'pagename'; $edit_auth = 1; $edit_auth_pages = array( '/.*/' => 'foo', );
テンプレート
新規作成するページが常に template というページを雛形にするための pukiwiki.ini.php の記述:
$auto_template_func = 1; $auto_template_rules = array( // '((.+)\/([^\/]+))' => '\2/template' '.+' => 'template' // by nishimotz );
複数行のプラグイン引数を可能に
後述する pre 機能を使うための pukiwiki.ini.php の記述:
define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0);
便利な使い方
- pre.inc.php http://home.arino.jp/?pre.inc.php : ブロックPREが使えるようになる。
- PHP 5.4 で pukiwiki CVS 版を動かしたら、うまく pre.inc.php が動かない。
plugin ディレクトリの中身あれこれ
topicpath.inc.php
ヘッダーの hoge / hoge / hoge のような(リンクつきの)HTML文字列を生成している。
下記のように直すと、
[[hoge/hoge/hoge]]
のようになるので、他のページからリンクを貼るときにコピーペーストが楽になる。
// Show a link to $defaultpage or not define('PLUGIN_TOPICPATH_TOP_DISPLAY', 0); // nishimotz // 中略 // Separetor / of / topic / path define('PLUGIN_TOPICPATH_TOP_SEPARATOR', '/'); // nishimotz // // 中略 // return "[[" . join(PLUGIN_TOPICPATH_TOP_SEPARATOR, array_reverse($topic_path)) . "]]"; // nishimotz
newpage.inc.php
新規ページを押した階層をページ名のデフォルト階層にする。
function plugin_newpage_convert() { (omitted) $newpage = ''; // by nishimotz begin if (isset($vars['refer']) && $vars['refer'] != 'FrontPage') { $newpage = $vars['refer'] . '/'; } // end
attach.inc.php
非公開で利用するときには添付のパスワードを不要にしたい。
ファイルサイズの上限を大きくしたい。例えば 1MB から 10MB に。
先頭の下記の設定をいじる。
// Max file size for upload on script of PukiWikiX_FILESIZE define('PLUGIN_ATTACH_MAX_FILESIZE', (1024 * 1024 * 10)); // default: 1MB // 管理者だけが添付ファイルをアップロードできるようにする define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', FALSE); // FALSE or TRUE // 管理者だけが添付ファイルを削除できるようにする define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', FALSE); // FALSE or TRUE
EUC-JP ファイル名のデコード
since 2013-10-09
Python 2.7 で。
なるべく将来性がありそうな書きかたをしてみた:
# coding: utf-8 from __future__ import unicode_literals, print_function from os import walk import unittest def hexEucJpToString(src): c = int(len(src) / 2) ar = bytearray() for i in xrange(c): h = src[i*2 : (i+1)*2] ar.append(int('0x' + h, 16)) return ar.decode('euc-jp') if __name__ == '__main__': for root, dirs, files in walk(WIKI_DIR): for f in files: if not f.endswith('.txt'): continue name = hexEucJpToString(f.replace('.txt', '')) print(root + ' ' + f + ' ' + name) class TestHexEucJpToString(unittest.TestCase): def testCases(self): self.assertEqual("日本語", hexEucJpToString("C6FCCBDCB8EC"))
pukiwiki.txt · 最終更新: 2013/10/09 17:13 by Takuya Nishimoto