PloneSilverCity
開発のプロが教える標準Plone完全解説
よく考えてみると長い名前だ。やったことないのと、Zope 2.9.x + Plone 2.5.x でどれくらいの変化があったかを見るためにはこういう練習もいいと思った日曜の昼さがり(子供熱発中(-_-;;)
SilverCity の インストール
sf.net にいってみると、0.9.7 というのが出ていたのでダウンロード。
tar xvzf して python setup.py install (個別環境にしてあるので su は不要っす) :
% /home/zope295/bin/python Python 2.4.4 (#1, Oct 28 2006, 10:04:23) [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import SilverCity >>>
うまくいったみたい。 python source2html.py source2html.py もうまくいくが、./source2html.py はうまくうごかない。なぜ? ま、いいか
念のため redirect して silver.html と、site-package/SilverCity? 内から css をコピーして書きなおしてブラウザでみるとちゃんと見えていた。よしよし
PloneSilverCity を作る
基本関数の作成
まずは source.py、 ダウソではなく打ちこむ。__main__ のテストまで打ってみて実行・・・あれ?動いた。打ちまちがいとか無いのは奇跡的(こんな量でいばるな)。てゆーか emacs で、予約語は色かわるしインデントも自動だしね。
ちなみに、一番最初の二行は [PEP-263]? に因んで :
#!/usr/bin/env python # -*- coding: utf-8 -*-
としました。えーと、下のようなメッセージ、Deprication Warning で、ascii じゃない文字が入っているといわれる人は二行目を参照して適当なエンコーディングを指定しましょう。:
/home/zope/hoge/Products/ATCTHoge/content/__init__.py:2: DeprecationWarning: Non-ASCII character '\xe6' in file ....../hoge.py on line 46, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
クラスの作成
次に、Plone の基底クラスを作る。PloneSilverCity.py の中でPloneSilverCityをクラス宣言とかすればいいか。
ここでは id と アンダースコア付き属性とアクセサを指定する。アンダースコア付きプロパティはWeb 側からアクセスできない
打ちこんだが、最後のテストは __main__ にした。統一しておこう・・・あれ?うごかない getLanguages で too many unpack が出る。
とりあえず、description がわたってこないみたいなので、普通にリストにしておく
プロダクトへの変換
クラスを書いたファイルにファクトリを追加する。そして config.py やら、ファクトリタイプも追加する。
p.366 リスト12-9 のファイル名が誤植だ。PloneSilverCirt.py になってる・・・
そして、ここのファクトリタイプ情報に書いて view_permission やらがどこでかくかとおもったら config.py だ。とりあえず。
それから、__init.py__ も書く
プロダクトモジュールへの変更
そうか、もう動かないから、__main__ は使ってないのね。了解。で、import をさくさく。
あと、 SeachableText も。そして、各メソッドに security.decleareProtected を付ける
スキンの追加
__init.py__ で skins を指定しているので mkdir skins して、そこに必要なものを入れる
まずは icon これは適当なものをコピーして済ます。つぎに css, これも silvercity から抜いてくる
が、2.0 と違いすぎて挫折・・・こうなりゃ ATCTだ・・・