Monday, February 17, 2014

Liferay お知らせポートレットの紹介

こんにちは、かわべです。
関東は2週連続で週末に大雪が降りました。都心でもまだ多少雪が残っている状況ですが、今週も週半ばに雪の予報が出ているそうですね…。大きな被害や影響が出ないことを祈りつつ、可能な範囲での備えはしなきゃいけないなと思っています。まずは帰宅したらブーツに防水スプレーを目一杯噴射します。

さて、ひっそりと続いているLiferayポートレット紹介シリーズです。今回はお知らせポートレット(Announcements Portlet)をご紹介します。

お知らせポートレットとは?


お知らせポートレットとは、ポータル利用者に対するお知らせや告知などを表示/管理するためのポートレットです。



お知らせポートレットのデータインスタンスは1つだけ存在しており、どのサイトページや個人ページにポートレットを配置しても参照するお知らせポートレットは同じです。お知らせには1件ごとに「全体」「サイト」「ユーザグループ」などの配布範囲(distribution scope)を設定します。参照するインスタンスは同じものでも、ポートレットを参照するユーザの所属サイトや割当ロールに該当する配布領域のお知らせのみが表示されるという仕組みになっています。

今回は立場の異なる複数のユーザを作成し、それぞれのユーザに当てはまるお知らせだけが表示されることを確認してみたいと思います。また、お知らせを追加するためのロールとその権限を持ったユーザも作成し、お知らせの追加はそのユーザに任せることにします。記事の作成にあたって使用しているLiferayはCE 6.2です。

サイト、ユーザ、ロールの準備


まずは準備作業です。この部分は管理者として実行していきます。

サイト

  • Sample Portal
名称を変えてしまっていますが、Liferayをインストールした際のデフォルトサイトです。このサイトのトップページにお知らせポートレットを追加しておきます。
お知らせポートレットは「ニュース」カテゴリに存在します。



  • Another Site
このサイトは新規作成しておきます。

ユーザ

以下のように作成します。
  • Owner
Sample PortalのSite Member, Another SiteのSite Owner
  • Member1
Sample PortalとAnother SiteのSite Member
  • Member2
Sample PortalのSite Member
  • Announcer
Sample PortalとAnother SiteのSite Member
このユーザには次に説明するAnnouncementロールを割り当てます。

ロール

Announcementという標準ロールを作成します。
ロールは「コントロールパネル→ユーザー→ロール」から新規追加することができます。このロールに配属されたユーザに、各配布範囲でお知らせを新規追加することを許可します。また、配布領域として最も広い「ポータル共通」のお知らせも追加できるようにしたいと思います。「権限の定義」から以下のように定義しました。



ポータル共通のお知らせを許可する権限は「通常のアナウンスを追加する」です(ちょっとわかりにくい日本語ですが、"Add General Announcements"です)。
前述したように、このAnnouncementロールはAnnouncerへと割り当てておきます。



準備はこれで完了です。

お知らせの追加


Announcerとしてログインしてお知らせを追加してみましょう。権限があるのでお知らせポートレットに「お知らせの管理」というタブが表示されているはずです。最初に配布範囲を選択してからエントリを追加/管理します。



お知らせエントリには配布範囲の他に、以下のような設定項目があります。

・種類
お知らせの種類を設定します。デフォルトでは、General, News, Testが用意されています。お知らせのメール通知設定(後述)に関連します。

・重要度
「重要」にした場合、通常のお知らせより上部に表示されます。

・公開開始日時、公開終了日時
お知らせの表示期間を指定します。


今回は以下の3パターンの配布範囲でお知らせを追加してみます。

1.共通
共通(General)のお知らせは、準備で作成した全ユーザとゲストが見れる想定です。

2.Another Site
Another Siteのお知らせは、Member2を除き、OwnerとMember1が見れる想定です。

3.Site Owner
Site Ownerのお知らせは、Ownerだけが見れる想定です。
このお知らせだけ「重要」に設定してみます(タイトルに入れているだけでなく、ちゃんと設定していますよ!)。

お知らせの見え方


それでは各ユーザにはどのようにお知らせが表示されるか確認していきます。
まずはログアウトし、ゲスト状態ではどのように見えるかというと、


共通のお知らせのみが表示されています。

Member1としてログインしてみると、以下のように見えます。



Member2としてログインすると以下です。



Ownerとしてログインすると以下です。



「重要」に設定したお知らせが一番上に表示されています。フォントも若干変わっている…はずですが、ほぼ気付かないレベルですね。。

ログイン状態である場合、ユーザは「既読とする」をクリックすることでお知らせを非表示にし、下に移動させることができます。



それぞれ想定通りのユーザのみがお知らせを読む事ができました。以上がお知らせポートレットの基本的な使い方です。

警告ポートレット


ここでもう1つ別のポートレットの紹介です。お知らせポートレットとほぼ同じ挙動をするポートレットに警告ポートレットというものがあります。お知らせポートレットの違いとしては、警告ポートレットでは各エントリが目立つ赤枠で囲まれます。



例えば、より重要度の高いお知らせや注意喚起にはこのポートレットを別途使用するような運用が考えられます。ただしお知らせと警告は別ポートレットですので、お知らせポートレットに追加したお知らせを警告ポートレットに表示させるような使い方はできません。

お知らせのメール通知


お知らせや警告が追加された際にメール等で通知を受けるかどうか、各ユーザが選択することができます。
設定はドックバーの「自分のアカウント→お知らせ」から行います。お知らせの種類によって通知方法を分けることが可能です。



では、さっそくLiferayをメールサーバと連携して確かめてみます。
メールサーバの設定は管理者としてログインした後、「コントロールパネル→編集→サーバ管理→メール」から行います。



ローカル環境でメールサーバが起動している場合は特に変更は不要かもしれませんが、外部サーバを利用する場合やポート番号が異なる場合は変更しておきましょう。

さて、メールサーバを適切に設定したところで、以下のお知らせを追加します。



すると、お知らせの配布領域に当てはまり、設定を行っているユーザに対しては以下のようにメールが送信されました。


通知メールに関連する設定(送信者名やメールテンプレートなど)はportal.propertiesに記載されていますので、変更したいものは上書きすることが可能です。

なお、CE 6.2.0 GA1ならびにEE 6.2.0 GA1ではメール通知機能がうまく動かないという問題があったようです。すでに修正はされていますので、次のバージョンでは使えるようになると思います。

まとめ


お知らせポートレットは置かれる場所ではなく参照するユーザによって表示されるお知らせが決まるというのが多少使いにくいところではあるかもしれません。単発のお知らせを表示させたいような場合にはWebコンテンツ表示ポートレットを使ったりするのもよいでしょう。しかしお知らせを1箇所で管理するのには便利な機能が備わっていると思いますので、ぜひ使い勝手を試してみてくださいね。

No comments: