MoinMoin のカスタマイズ

MoinMoin を個人用メモサイトとして使うために色々と設定した時のメモ。

匿名ユーザーの編集禁止

個人用メモなど自分か限られたユーザー以外の編集は禁止したい場合がある。スーパーユーザー以外が編集できないようにするには wikiconfig.py に以下の定義を追加する。

    acl_rights_default = u"All:read"

これを指定しないとデフォルト値となり、全ユーザーに書き込み権限が与えられる。ここではデフォルト値を上書きして全ユーザーに読み出し権限のみを与えるよう変更している。

ACL は before → default → after の順で加算されるように適用される。管理者は既に before 段で全権限を付与されており、後の段で明示的に剥奪されない限り全操作が可能となる。default はページごとの ACL があれば上書きされるため、特定のページだけ匿名ユーザーの閲覧を禁止したい場合にも対応できる。
ACL について詳しくは HelpOnAccessControlLists を参照。

自由にユーザーを作れないようにする

MoinMoin はデフォルトでは誰でも自由にユーザーを作りまくることができる。これも制限したい場合がある。

制限には様々な方法が提案されているが、ここでは textcha を使ってみた。本来は質問を出し、それに答えさせることで人間かどうか判別するのが目的のシステムだが、ここでは単純にパスワード的なものを問い合わせるのに使う。

メリット
  • 本体に手を加えることなく制限できる
  • ユーザーを作成したくなった場合にもパスワードを入れるだけで簡単に対応できる
デメリット
  • textcha は他のアクションにも使われ、アクションごとに質問を変えて厳しく制限したり緩く制限したりはできない

textcha については HelpOnSpam を参照のこと。

wikiconfig.py に以下の定義を追加する。language_default を使うので、それより後ろで定義する必要がある。

    textchas = {
        language_default: {
            u"Password?": ur"パスワード",
        },
    }
    textchas_disabled_group = u"Admin"

ur"パスワード" の部分に textcha 解除用のパスワードを入れておく。

textcha は言語ごとに定義するが、目的の言語のものがなかった場合は language_default 用が使われるのでこうしておけば漏れがなくなる。

管理用に、textcha を適用しないユーザーグループを作る (ここでは Admin とした)。ユーザーグループはグループ名で普通の wiki ページを作ってそこにユーザーを列挙することで作ることができる。

http://domain/Admin にアクセスし、新規ページを作成する。
ページ内容は以下のようにする。

#acl Admin:read,write,delete,revert

 * 管理用ユーザー名

これで、Admin グループのユーザーは textcha が免除される。

ページ名をクリックした時の動作をバックリンク検索から普通のリンクへ

実害はないが、ページ名をクリックしてバックリンク検索を呼び出すのは慣れないと全く予期せぬ動作である。
1.9.7 ではどうしようもないが、2014 年 6 月時点の最新のリポジトリ (1.9.8) では以下の設定でバックリンクを off にして通常のページリンクに差し替えることができる。

    backlink_method = lambda self, req: 'pagelink'

backlink_method はメソッドオブジェクトなので、無名関数を作って常に 'pagelink' を返すようにする。

改行がくっつくのを止めたい

大抵の Wiki ではページソース中の改行は無視され、複数行が繋がってしまう。これがどうも好みに合わない。空行を一つ入れて段落を分ければ改行されるが、段落が変わるので大胆に隙間が空いてしまって単なる改行とは意味合いが異なる。段落の中で強制的に改行するには <<BR>> マクロを使えばいいが、書くのが面倒。ワガママ言ってすみません。

Pukiwiki 等には改行の扱いを変更するオプションがあったりするが、残念ながら MoinMoin にはない。どうにかならないかと思い、デフォルトのパーサ (テキスト → html 変換モジュール) を小改造した「改行そのまんまパーサ」を作ってみた。

改造版デフォルトパーサ

Markdown 記法を使えるようにする

これもパーサを作って対応した。色々と制限はあるが、あまり Wiki 本体の機能を使うつもりがないなら一通りのことはできる。

Moin/Markdown

ユーザー制作のテーマ

MoinMoin に標準で入っているテーマは他の Wiki とあまり似ておらず、サイドバーもない。

公式に行くとユーザーメイドなテーマがあるので検討してみるのもいいかもしれない。サイドバーが使えるテーマもいくつかある。
公式 ThemeMarket

自分でも作ってみた。
memodump

Moin/Customize (最終更新日時 2014-07-30 19:48:26 更新者 dossist)