メンバーがログインすると、特定のメンバーのフォルダーが作成される Plone メンバー フォルダー機能を使用しています。
ログイン時に作成するフォルダを追加するには? メンバーの名前が入ったフォルダだけでなく、その中のいくつかのフォルダも?
スキン メソッドを作成notifyMemberAreaCreated
して、新しく作成されたメンバー フォルダにコンテンツを追加できます。スクリプトは、この新しいフォルダーのコンテキストで呼び出されます。
これがビューやイベント ハンドラーではなくスキン スクリプトでなければならない理由は、Plone のこの部分が CMF の古い機能に由来するためです。この機能は、最新の API 標準にまだ更新されていません。
notifyMemberAreaCreated.py
Python スキン スクリプトの例を次に示します。
## Script (Python) "notifyMemberAreaCreated"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=Modify new member area
##
context.invokeFactory('Folder',id='subfolder')
context.subfolder.setTitle('Your new subfolder')
context.reindexObject()
このスクリプトにManager
プロキシの役割を与える必要がある場合があります。ファイルシステムでこのスキン スクリプトを定義する場合、カスタム スキン レイヤーで、.metadata
ファイル ( という名前notifyMemberAreaCreated.py.metadata
) を追加して、このプロキシ ロールを設定します。
[default]
proxy=Manager
Plumi (http://pypi.python.org/pypi/plumi.app) では、その方法を確認できます。最初に plumi.app のプロファイルにあるフォルダー構造は、インストール時に、いわゆる default_member_area に作成されます。notifyMemberAreaCreated.py では、default_member_area が新しいメンバー フォルダーにコピーされます。