Personal tools

[2]プロダクトの構造

RichDocumentのプロダクトディレクトリのファイルを概観します。

RichDocumentはATContentTypesのATDocumentを拡張しています。拡張することは比較的簡単です。拡張するためのコードを説明する前に、RichDocumentのパッケージレイアウトについて説明します。
  __init__.py
  config.py
  
  interfaces/
  interfaces/richdocument.py
  
  content/
  content/__init__.py
  content/attachments.py
  content/richdocument.py
  
  widgets/
  widgets/__init__.py
  widgets/attachments.py
  widgets/images.py
  
  Extensions/Install.py
  Extensions/utils.py
  
  skins/
  skins/RichDocument/*
  skins/attachment_widgets/*

このレイアウトは、ATContentTypesのコンテンツタイプ規約にしたがっていました。次に主なファイルについて説明します。

__init__.py

このファイルはZopeがRichDocumentプロダクトをロードするときに実行されます。プロダクトを初期化するコードを含んでいるため、Zopeが理解できるようになります。このファイルで、スキンフォルダ用のFIleSystemDirecoryViewを登録します。つまり、RichDocumentをインストール後、portal_skins/RichDocumentは、skins/RichDocumentフォルダのコンテンツを反映したものになります。

config.py

設定用の定数を定義しています。プロダクト名やコンテンツの追加で使用するパーミッションが設定されています。

interfaces/ フォルダ

このプロダクトで定義されているインターフェースを記述しています。IRichDocumentインターフェースはATContentTypesのIDocumentインターフェースを拡張しています。IRichDocumentインターフェースを提供しているコンテンツタイプは、暗黙的にIDocumentが提供しているすべての機能をサポートしています???。インターフェースを定義することは、コンテンツタイプが機能するためには厳密には必要ありませんが、文書を提供でき、クラスの振舞を宣言できるのでこの慣例にならっています。

content/ フォルダ

実際のコンテンツタイプが実装されています。richdocument.pyはRichDocumentタイプを実装しています。attachments.pyはImageAttachmentとFileAttachmentを実装しています。この二つのタイプは、画像や添付ファイルのアップロードをできるようにするために使用します。__init__.pyファイルでこれらのタイプをロードします。このため、RichDocumentをインポートするために、書かなければならないのは、from Products.RichDocument.content import RichDocument だけになります。

widgets/ フォルダ

RichDocumentで使うカスタムウィジェットを定義しています。これらは、content/__init__.pyと同じように__init__.pyで初期化されます。RichDocumentは二つの複雑なウィジェットを定義しています。画像と添付ファイルのアップロードと管理するために、これらのウィジェットをコントローラアクションで使います。

Extensions/ フォルダ

External Methodsをインストールします。プロダクトをインストール、または、アンインストールするときに、PloneのQuickInstallerがInstall.pyファイルを読み込んで、install()とuninstall()メソッドを実行します。utils.pyファイルは、追加のsetupメソッドが実装されています。これらのメソッドは、install()メソッドから呼び出されます。

skins/ フォルダ

標準のインストールの仕組でskins/RichDocumentとskins/attachment_widgetフォルダをportal_skinsに登録すします。インストール後にRichDocumentでページテンプレートとPythonスクリプトを使用できるようになり、画像と添付ファイルのアップロードウィジェットを利用できるようになります。
You are here: Home Zope Developers Camp Zope Developers Camp 2005 Summer プログラム RichDocument How Toの翻訳 [2]プロダクトの構造
Navigation
Log in


Forgot your password?
 

Powered by Plone, the Open Source Content Management System