2011-10-19 5 views
3

Plone 4.1では、匿名ユーザーが見ることができるメンバー肖像(portal_memberdata/portraitsにあります)を作成したいと思います。Plone 4.1の匿名ユーザーがメンバーの肖像画を閲覧できるようにする

パブリックビューで画像に正しいURLを返しても、画像は常に保護され、代わりにデフォルトの画像( 'defaultUser.png')が返されます。

私はどのようにして作成者の肖像画をビューレット内の匿名ユーザーに表示できますか?

だけ明確にする:

author.getPersonalPortrait().absolute_url() 

画像に正しいURLを返します。ビューにアクセスしたときにブラウザによってイメージがフェッチされると、リソースは保護されます。

+0

_checkPermission(「表示」、肖像)verifyPermission場合とない:ユーザーは、このgetPersonalPortraitで行われるチェックされ、それに を得ることができない場合 #は肖像画を返さないでください。 – Yuri

+1

ただし、verifyPermission kwargは常に0を指定してデフォルト値として呼び出されるため、このチェックは行われません。 – zedr

答えて

3

あり、私はこの問題を解決:)そこにアクセス権を管理しますway:

def get_author_image(self, member_id): 
    """ 
    Fetch the author portrait image url accoding to member_id 
    """ 
    mtool = getToolByName(self.context, 'portal_membership') 
    mtool.getPersonalPortrait(id=member.id) 

秘密がid kwargを通過しています。奇妙だが、うまくいく。

これは許可の問題ではなく、むしろgetPersonalPortraitが正しいURLをイメージに返す方法の問題です。 idを指定しないと、何らかの形で正しいメンバIDを見つけることができなくなり、デフォルトのユーザイメージを表示するようになります。

+1

メンバーオブジェクトにgetPersonalPortraitメソッドがないためです。これは、portal_membershipツールから取得され、idが指定されていない場合、現在の認証されたメンバーのポートレートを返します。 混乱を避けるため、コードを適切に更新する必要があります。 return mtool.getPersonalPortrait(id = member.id) – quyetnd

1
def __init__(self): 
    BaseTool.__init__(self) 
    self.portraits=BTreeFolder2(id='portraits') 

portal_memberdata.portraitsフォルダに表示権限を追加する必要があります。

あなたがに行くことによってそれを行うことができます。

http://mysite.xx/portal_memberdata/portraits/manage_main

と肖像画は、PDBの周りつついのビットの後、簡単な画像

関連する問題