プロフィール表示ポートレット
作成したプロフィールが他のメンバーから見えるようにするための、ポートレットを作成します。
目次
- 概要[overview]
- Script 作成[script]
- ポートレット作成[create]
- ソースコード[source]
概要[overview]
さて、 データ項目を追加 を 設定画面に項目追加 でメンバーが自分のプロフィール情報を登録できるようになりました。
しかし、このままでは登録した情報は自分しか見ることができません。
そこで、メンバーのホームにアクセス時にプロフィール情報を参照できるように、ポートレットを作成します。
今回作成するのは以下の2つの Skript と1つの Page Template です。
getMemberByIdId からメンバーのデータを取得する Python Script。getDispnameId からメンバーの表示用の名前を取得する Python Script。portlet_profileプロフィールを表示するポートレット本体。
Script 作成[script]
最初に2つのスクリプトを custom フォルダに作成します。 このスクリプトはポートレットの中で使用されます。
このスクリプトをわざわざ外だしにした理由は、Page Template の中で記述すると複雑になるということもありますが、それよりも 「管理者権限じゃないと実行できないメソッド」を使用している。 ということの方が重要です。
例えば getMemberById スクリプトでは、CMFCore/MembershipTool.py で定義されている
getMemberById(id) というメソッドを使用しています。
このメソッドはメンバーは実行できず、管理者権限を持ったユーザでないと実行できません。 そこで zope の Proxy roles という機能を使って、スクリプトに管理者権限を与えます。
スクリプト等に管理者権限を与えるためには、その対象となるアイテムの
proxy タブをクリックします。
すると、Proxy roles 設定画面が表示されるので、与えたい権限(この場合は Manager)を選択して Save Changes ボタンをクリックします。
このように設定することにより、普通のメンバーが実行できる Script の中で、管理者権限がないと実行できないメソッドが実行できるようになります。
ポートレット作成[create]
ここまででプロフィール情報を表示するためのポートレットを作成する準備ができました。
あとは、custom フォルダに portlet_profile という名前の Page Template
を作成します。
なお、画像の表示時に /thumb
と指定してサムネイルを表示していますが、この記述方法でサムネイルを表示できるようにするためには、
ImageTag_CorePatch 0.3
をインストールする必要があります。
ポートレットを作成したら、設定を行います。
このポートレットはメンバーのホーム以下に動作するので、
Members フォルダのプロパティに left_slots または right_slots
の値として here/portlet_profile/macros/portlet を設定します。
メンバーのページを参照して、ポートレットのプロフィール情報が表示されていることを確認します。
以上で、各メンバーでプロフィール情報を参照できるようになります。
ソースコード[source]
ここで説明した Script, Page Template のソースコードは下記のリンクから参照してください。