Plone で動くBlogプロダクト

Zope/Plone 2 Comments

Plone で動くBlogプロダクトで便利だなーと思うのは、collective.blogging。

これは、標準アイテムを拡張してBlogにしてしまうもの。PloneのUIにはマッチしたものだけど、単純に記事を書いて、公開したいというには、ちょっと面倒。

そこで、勉強がてらBlogを作ってみた。(まだ公開していないけど。)

以前、dexterityの勉強のために、
Products.ngiNikkiというのを作っていて(まだ作成中・・・。)、これをArchetypeベースにして、lightboxを同梱し、Plone3とPlone4両方で動くようにしたもの。

残すタスクは、ポートレット部分と国際対応、そして、すこしのテンプレート修正。あと、ドキュメントか。

プロダクト名は、ngi.site.blog となる予定。

今月末の公開を目指す。

なお、使ってもらっているサイトは、こちら↓↓
http://www.edu-con.jp/s-blog

Plone 4 dev用buildout

Zope/Plone No Comments

以下、最近利用する頻度が多くなってきたのでメモしておく。

Plone4 のbuildoutの場所

http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0/

MeeGo に Plone4 をインストールするために必要な物

Linux, MeeGo, Zope/Plone No Comments

MeeGoというIntelとNokiaによるLinuxOSを使い始めた.このOSのUIはかわいくて使っていて楽しくなる.これを開発用にしようと思い,Plone4 Unifiedinstallerをインストールしてみた.インストールする為に必要なパッケージの一覧は下記である.

  • make
  • gcc-c++
  • zlib-devel
  • libjpeg-devel
  • readline-devel

これらをyumを使ってインストールする.これでPlone4をインストールして利用することが出来る.

PloneonMeeGo

Plone4のpoファイルのコンパイルオプション

Zope/Plone No Comments

Plone 4のUnified Installerには、下記の記述がbuildoutファイルにないので、poファイルがコンパイルされない。そのため、自分で作ったプロダクト等の翻訳が適用されないで焦るときがある。そんなときは、下記の記述の確認をし、無ければ、buildout.cfgなどに追加してあげるとよい。

[instance]
environment-vars =
zope_i18n_compile_mo_files = true

以上、忘れずにメモしておく。

Ploneのサイト管理でスキンカスタマイズ「Theme Editor」

Zope/Plone No Comments

Plone 4 の experimental に skineditor.cfg が追加されました。

1.Ploneのサイト管理でスキンのカスタマイズを可能にする 「plone.app.skineditor」

plone.app.skineditor は、ZMIにアクセスせず、Ploneのサイト管理からportal_skin, portal_view_customizationsの中のテンプレートやリソースをカスタマイズできるという優れものです。

旧来の、ZMIによるカスタマイズでは、portal_skin, portal_view_customizationsそれぞれの場所に行き、該当するファイルを探し出してカスタマイズする必要があり、手間が多く、ZMIは、Ploneの管理インターフェイスとは少し異なるので、抵抗がある人もいたと思います。

2.インストール

早速、 ./bin/buildout -c skineditor.cfg -n を実行します。

サイト設定に行き、Theme Editor 0.1devをインストール(有効に)します。

図1:有効にした状態 Theme Editorと表示される。

3.Theme Editorを使ってみる。

Theme Editorをクリックして、どのようなものか見てみます。

図2:Theme Editor画面

Skin Resource Editorというタイトルが表示され、スキンのリソースが一覧で表示されます。タイトルの下にある、検索ボックスで、テンプレートやリソース、Pythonスクリプト、JavaScriptを検索でき、隣のキーワードタグでフィルタリングすることができます。

4.試しにFooterを変更してみる。

では、試しにFooterを変更してみたいと思います。キーワードタグの中から、Viewletsをクリックします。Footerは、plone.footerという名前なのでそれを選択します。

図3:plone.footerを選択したところ

クリックすると、該当するテンプレートやインターフェイスを記したボックスが表示されます。まさにこのテンプレートを編集したいので、クリックします。

図4:テンプレートの内容が表示された。

ポップアップして、テンプレートの中身が表示されました。

CustomizeボタンをクリックしてCustomします。

図5:ビューのカスタマイズをしているところ

編集が終わったら、最後に、Save Changesをクリックして保存します。現段階では、ウィンドウが自動でクローズしないみたいなので、自分で「×」ボタンを押してクローズします。

図3の画面に戻ってみると、カスタムしたものが先ほどの項目の上に表示されています。そして、有効になっているので、赤色ので記されています。

図6:カスタムができ、項目が増えた。Customしたものは「In the database」となっている。

以上でカスタマイズが終了しました。

図7:Before
図8:After

5.おわりに

PloneのSkinカスタマイズは、ZMIにアクセスしないといけないのが、欠点でした。これと同時にインストールされる、Products.Glowormを使えば、ZMIに行かずにPloneの統一されたUIで作業ができるので、とても重宝しそうです。

Ploneのフォームで2重投稿を禁止するJSの回避方法

Zope/Plone No Comments

Ploneは、フォームで2重投稿を極力避けるために、jQueryを使ってアラートを出すようにしています。

これは、目的によっては、邪魔な存在なので、表示させない方法。

submitボタンのクラスに allowMultiSubmit を割り当てる。

以上で回避できます。

Windows版のPlone

Zope/Plone No Comments

Windows版のPlone 4は、portal_css, portal_javascriptsをデバッグモードにしておくと、非常に遅い!!!

スキンプロダクトの作成や、ビュー周りの検証をするときは、Linuxか、MacにインストールしたPlone 4を使うとよい。

フォルダが作成出来ないと嘆いていたら。

Zope/Plone No Comments

Flashからフォルダを作成出来るようにしていたのですが、どうもうまく動かない。

プロセスもpermissionにも間違い無いはずなのに、なぜ動かないのだろう。

いろいろと調べていたら・・・

テスト環境にフォルダを作成する為のメソッド名と同名のPythonスクリプトが存在した・・・。

・・・・・・・・・・・・。

さあ、次に進むぞ。

反省

Zope/Plone No Comments

Flash部分にどのぐらいのコストをかけ、Ploneの部分にどのぐらいのコストをかけるかというのをはっきりとしておくべきだった。

反省・・・。

疲れた

Zope/Plone No Comments

タイトル通り。以上。

Ploneのテキストフィールドのデフォルト文字

Zope/Plone No Comments

テキストフィールド欄にデフォルト文字を表示させたいとき、一般的には、jquery.fieldtab.jsを使う。

Ploneでは、このようなものが、簡単に最初から使えるようになっている。

方法は、input タグ内のTitle属性に表示させたい文字列を入力し、class属性に「inputLabel」を割り当てるだけで、実現できる。

Flashアップローダに苦戦。

Action Script 3, Zope/Plone, 日常 No Comments

予想以上にPloneとの連携に手こずった。Plone用のFlashファイルアップローダを作成していたのだが、Flash Player 9をターゲットとした場合、大変だった。 次は、外にお願いしたい気分。PloneでFlashUploaderのプロダクトがあまり出てこないのも納得した。Plone的に、このセキュリティで大丈夫なの?と言うところがあったりする。

ちょっと愚痴っぽくなったが、勉強になったので良かったことにしよう。

PloneへのFlashを使ったファイルアップロード

Flex, Zope/Plone No Comments

FlashのFileReferenceListで、まとめてファイルを取得することができる。このFileReferenceListは、browseメソッドを実行することでファイルダイアログ選択することができる。選択後、FileReferenceオブジェクトのArrayを持つので、このFileReferenceオブジェクトのuploadメソッドを使うことでファイルアップロードが出来る。

いろんなサンプルでは、取得したFileReferenceのArrayに対して、For each文を使いFileRefence.upload()を行いアップロードをしている。

ただ、この方法では、一気にPloneに対してアップロードを行うため、ほぼ、Confrict errorを起こす。

回避方法として、サンプルのようなFor eachを使わず、一つづつ確実にアップロードを行う。FileRefenceのFile upload completeイベントで、次のFileReferenceのuploadを行うようにする。

conflict errorを起こしてもZopeは再試行してくれるのだが、FileReference.upload()の仕様上、起こされると面倒な処理を記述する必要があるので、なくすように心がけた。

Flash Player 10以上で作っていいのなら、こんな面倒なことをしなくてもよさそうだけど・・・。

アドオンプロダクトでプロダクト名が2重に表示される

Zope/Plone No Comments

Products.hogeとしたプロダクトのconfigure.zcmlに、<five:registerPackage package="." initialize=".initialize" />の記述があると、サイト設定のアドオンプロダクト項目でプロダクト名が2重に表示されてしまう。

この現象は、collective にあるプロダクトを参考にプロダクト開発を行い、configure.zcmlに記述してしまうとおきる。(自分がそう)

回避策として、<five:registerPackage package="." initialize=".initialize" />を削除する。 また、initialize関数でファクトリ・permissionの設定をしている場合は、zcmlベースの方法へ変更する。

スキンの作成方法 第1回

Zope/Plone No Comments

Zope/Ploneアドベントカレンダーの順番がnyusukeさんより回ってきました。

私は、Plone3用のスキンを作成する方法を書きます。

今回のゴールは、Pasterでスケルトンを作成して、サイトのロゴを変更していきます。
Read the rest…

« Previous Entries