Archive for the ‘Zope/Plone’ Category
Plone 4 でZMIのルートが文字化けする
Plone4で新規サイトを作成する際、タイトルに日本語を入れるとZopeインスタンスのルート画面が文字化けします。これを回避するには、Root Folderのプロパティに、management_page_charsetプロパティを追加して、値にutf-8を入れます。
1.Propertiesタブをクリックします。
2.新規追加する部分に、Name に management_page_charset を Value に utf-8 を入力します。Typeは、Stringを選択しておきます。Addボタンを押します。
以上で設定は完了です。
参考サイト
- wiki.zope.jp: 管理画面の文字コードをEUCに固定
Ploneの開発でのテストについて学ぶ
プログラミング全般にいえることなんですが、Ploneを使った開発でもテストは重要でした。
いままで、テスト技法を覚えるのがめんどくさくて、自分で書いたことがなかったのですが、Plone4をまじめに学習していくのにあたり、テスト技法も学ぶことにしました。
学習の際に参考にしたサイトは、以下のものです。
- 清水川Web 「Unit testing」
- Plone.org 「Testing in Plone」
Plone 4 Dev をWindows へインストールするときの注意点
Plone 4 devをWindowsへインストールするときに、現時点では、ソースコードを少し修正する必要がある。
下記のリンクを読み、該当箇所を修正することでインストールできました。
https://bugs.launchpad.net/collective.buildout/+bug/462731
\src\plone.recipe.zope2instance\src\plone\recipe\zope2instanceないの__init__.pyの68行目を修正すればよいです。
あと、SVNのクライアントとコンパイラが必要になるので、Visual Studio2008等の準備が必要です。
Plone 4 インスタンス作成
前の記事でPlone 4をインストールしました。この段階では、まだインスタンスが作成されていません。

画面中央の[Create a new Plone site]ボタンをクリックします。
ログインダイアログが表示されるので、User, Passwordを入力します。

Idを指定して、デフォルト言語を指定して、あとは、オプションが必要ならばチェックを入れます。
最後に、[Create Plone Site]をクリックして完成です。

無事にインスタンスの作成ができました!
今回、IdをPloneと指定したので、下記のアドレスでアクセスできます。
http://localhost:8080/Plone
Plone 4 がインストールできた。
Plone 4をUbuntu 9.10 64bitへインストールができました。
以下、手順と困った点の解決方法。
自前でPython2.6.4をコンパイルしてインストールします。
このPythonへPILをインストールします。
SVNから4.0のbuildoutをダウンロードします。
http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0/
ダウンロードしたパスへ移動します。
インストールしたPythonで、python bootstrap.pyを実行します。
./bin/buildout を実行します。
後は、待つだけです。が、z3c.coverageがうまくインストールできずに失敗しました。なので、easy_install でインストールします。
インストール後、再度、./bin/buildout を実行します。
無事にインストールできました。
起動は、./bin/instance fg を実行します。
なお、fgは、デバッグモードで起動することを意味しています。
確認は、ブラウザのアドレス欄にhttp://localhost:8080/を入力。

この画面が表示されていればインストールが成功!
3までと違ってPloneのインスタンスは、作成されていないんですね。
自前のテンプレートエンジン
いま、自作のテンプレートエンジンを作ってみてたりしている。
きっかけは、ZPTなどがどうやっているのかを知りたくて始めた。結構、地道な作業なんだ。手軽に利用できるようにしてくれているのはありがたい。
自分のも出来たらそのうち公開する(予定。。。)
Plone 2.1.xの文章内にYoutubeの動画を埋め込む
Ploneは、レンダリング時に表示したくないタグを除去する仕組みがあり、これが原因で、Youtubeの動画がページ内に埋め込めないことがあります。
この機能は、ユーザ(サイト管理者)で制御が可能となっていて、最近のPloneではサイト設定から出来ますが、Plone2.1系ではサイト設定からは出来ないみたいなのです。
ということで、ZMIを使って設定変更をします。
まず、URLの最後にmanageと入力してZMIにアクセスします。![]()
次に、portal_transformsをクリックします。
safe_htmlをクリックします。
そして、nasty_tagsから、embed, objectを削除します。
valid_tagsの項目にタグ「embed, object, param」を追加します。Valueはいずれも0にします。
追加が終わったら、送信ボタンをクリックして終了です。
3.eduCommonsのサイトを日本語にする
インストールしたばかりのユーザインターフェイスは英語ですが、ボランティアにより、日本語化[1]が進められています。
今回は、ユーザインターフェイスを日本語へ変更を行います。
1.管理画面(Site Setup)へアクセス
ユーザインターフェイスの言語切り替えは、管理画面(Site Setup)内の言語(Language)項目で行います。
サイトへ管理者でログインし、画面右上の「Site Setup」リンクをクリックして管理画面へアクセスします。
言語設定ページへ移動します。言語(Language)リンクをクリックします。
2.日本語へ変更
サイトのユーザインターフェイス言語を日本語へ変更します。
- Default site language項目のドロップダウンボックスから「Japanese」を選択します。
- Available languagesの項目のドロップダウンボックスから「Japanese」を選択します。
※複数指定することにより、複数言語のUIを提供することができます。 - 最後にSaveボタンをクリックします。
fig 3. 言語設定(Langage Settings)ページ ![]()
ブラウザでリロードを行えば、サイトが日本語に切り替わっていることがわかります。
リファレンス
[1] eduCommons Japan : http://groups.google.co.jp/group/educommons-japan
2.eduCommonsへのログインとログアウト
前回は、eduCommons[1]をWindowsへインストールしました。
今回は、eduCommonsへのログインとログアウトをします。
1.ユーザ名とパスワードはどこ?
WindowsインストーラでインストールをしたeduCommonsですが、インストール時にユーザ名やパスワードを指定することがありませんでした。
では、どうやってログインするのでしょうか?答えは、eduCommonsをインストールしたフォルダにあります。adminPassword.txtファイルに管理者のユーザ名とパスワードが記入されています。
1.eduCommonsのインストールと起動・停止
eduCommons[1]は、オープンコースウェアを構築するためのWebアプリケーションです。eduCommonsは、オープンソースプロジェクトであり、CMS(Content Management System)のZope, Plone[2,3]をベースに作られています。
先日、バージョン3.2.1-finalがリリースされたので、Windows版を自宅のWindowsXPマシンへインストールをしてみました。
IIS + WSGI Part-1
サーバーがWindows Server 2008になる可能性があるので,IIS からDjangoやZope3を使うための方法を探してみた.
pyisapie
http://apps.sourceforge.net/trac/pyisapie/
isapi-wsgi
http://code.google.com/p/isapi-wsgi/
いろいろあった.
これから,VM上にWindows Server 2008環境を作ってテストしてみる.
続く
easy_installでMinGWをコンパイラとして指定する方法
Windowsでeasy_installを行うとコンパイルが必要なものの場合,コンパイラが無いからコンパイルできないと言われて先に進まない.
そのときは,Python2.5の場合,VisualStudio2003が必要となるのだけれど,これだけのためにVisualStudio2003を入れるのはHDDがもったいない.
なので,MinGWを利用する.
でも,ただインストールしてパスを通しただけでは,easy_installでMinGWをコンパイラとして利用することはできない.
PythonのLibフォルダにdistutilsというフォルダあり,この中にdistutils.cfgというファイルがある(無いときは作成する).
そして,下記の行を追加する.
[build] compiler=mingw32
このあと,easy_installを実行すると,MinGWでコンパイルされる.
Grok : Zope3をベースとしたWeb Framework
Grokをまじめに始めました.GrokはZope3をベースとしたWeb Frameworkです.とっても扱いやすいです.zcmlをほとんど意識しないのが新鮮.
これから,簡易CMSの作成をしていくつもり.
以下,機能など.
- 追加・変更・削除ができる
- フォルダ
- ドキュメント
- ファイル(画像など)
- コンテンツの階層管理
- メールフォーム
- アクセス制限
- ユーザ認証
- ワークフローによる公開プロセス
- リッチなドキュメントエディタ
ZODBのパック
自分のサイトのZODBを久しぶりにパックした。ここは、特にサービスを提供しているわけでもないので、サーバー自体のバックアップのみで、ZODBのパックを放置していた。久しぶりにZopeの管理画面からZODBの管理ページを見たらびっくり!
なんと、6.8GBまで膨らんでいた。早速、パックをかける。すると、98MBまでに下がった。1年半以上、放置していたのがいけませんでした・・・。
ちゃんとに設定しておこう。
Plone3のインターフェイスを利用した検索
Plone2の検索において、図1に示す2つのコンテンツタイプ「A,B」に限定して検索したい際、
パラメータを、’portal_type’:(‘A’,’B’,)と2つのコンテンツタイプを指定していました。
Plone3でも、もちろん上記のようにして検索可能ですが、3では、インターフェイスを指定して、検索することもできます。図2のように、ISearchインターフェイスを用意して、A,Bコンテンツタイプから引き継ぎます。
そして、従来指定方法「’portal_type’:(‘A’,’B’,)」を「’object_provides’:(ISearch.__identifier__,)」とすることで、ISearchインターフェイスを実現元としているコンテンツタイプに限定して検索することができます。つまり、図2だと、コンテンツタイプA,Bとなります。
使い方によっては、とっても便利です。ただ、多重継承により、予期していないコンテンツまで抽出してしまうという問題もあるので、利用には注意が必要です。まあ、しっかりと設計していれば、問題はないと思います。