2016-03-29 5 views
2

敏捷性FTIには、あるタイプの "AddPermission"として権限を選択するオプションがありますが、タイプをコンテナに追加する前に、真になる可能性のある複雑なロジックを解決する必要がある方法を探しています。私の特定の例では、任意のコンテナでこのコンテンツのX番号だけを許可しません。たとえば、 "isAddable"などのメソッドをサブクラス化することができれば、これを行う方法は見当たりません。クラスオブジェクトがまだ開始されていないので、これは可能ではない可能性があります。したがって、メソッドを呼び出すことはできませんが、おそらくFTI自体に何かがありますか?敏捷性タイプを追加可能にする条件を追加するにはどうすればよいですか?

私はもう2つのオプションを考えました。私の場合、コンテナもカスタムコンテンツタイプであるため、allowedContentTypesメソッドをオーバーライドできます。私はむしろ、このチェックを行うためにコンテナに頼っていないだろう。別のオプションは、plone.app.content.browser.folderfactories.FolderFactoriesViewのaddable_typesメソッドをオーバーライドすることです。より良いアプローチがありますか?

この

は、残念ながらFTIの "addable_expression" のようなものはありません

答えて

2

のPlone 4.3です。

私はFolderFactoriesViewをオーバーライドすることはトリックをしないと思う - スマートなユーザーはまだ${folder_url}/++add++your.typeを呼び出すことができます。

folderishタイプのallowedContentTypesのカスタム実装は、私にとって良い解決策のように聞こえます。

別のオプションは、条件が満たされない場合にエラーを発生させるイベントハンドラ(イベントが収まるdunno - 恐らくzope.lifecycleevent.IObjectCreatedEventが問題ありません)を追加することです。 (ユーザーはまだ "add/yourtype"メニューが表示されますが、エラーが発生します - これはカスタムFolderFactoriesViewと組み合わせてください)

+0

セキュリティについての説明は正しいですが、依然としてaddableのビジュアルUI制限(ユーザーは追加可能なタイプは表示されませんが、手動で追加URLを書き込むことはできます)https://github.com/keul/collective.factorymenuを使用することができます(テストの問題でまだリリースされていませんが、Plone 4.3と5) –

+0

私は、フォルダファクトリのビューを修正し、zope.lifecycleevent.interfaces.IObjectAddedEventのイベントリスナーも作成しました。親コンテナのallowedContentTypesを変更すると、残念ながらファクトリビューを変更するのと同じセキュリティホールが発生しました。 – Esoth

+0

詳細なフィードバックをいただきありがとうございます。あなたの問題が解決されたと聞いていいです;-) – fRiSi

関連する問題