PHP で書かれた Wiki エンジンの一種。
公式には 1.4.7 から長期にわたってバージョンアップがなされていない。 添付ファイルの扱いが貧弱。 非日本語圏では普及していない。
nishimotz は dokuwiki を使うことが増えたが、pukiwiki も使い続けているので、気づいたことをメモしていくつもり。
PukiWiki Plus! (1.4.7ベースに国際化など)
PHP 5.4対応
あまり派生版を作りたくなかったがあまりに混沌としているので作りました
変更点
書き込みのみ 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);
ヘッダーの 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
新規ページを押した階層をページ名のデフォルト階層にする。
function plugin_newpage_convert() { (omitted) $newpage = ''; // by nishimotz begin if (isset($vars['refer']) && $vars['refer'] != 'FrontPage') { $newpage = $vars['refer'] . '/'; } // end
非公開で利用するときには添付のパスワードを不要にしたい。
ファイルサイズの上限を大きくしたい。例えば 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
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"))