slack

テクてく Lotus 技術者 Slack に参加しよう!

2010/01/19

XPages Tutorial Part 46 : ロケーション文書の追加、修正、削除の機能を完成させる

Setting Up To Add Edit And Delete Locations {Original Source}

アプリケーションは XPages に関してはほぼ完成しました。
ユーザーはロケーションを選択し、そのロケーション内のスタッフ全員がわかり、ある人を選択すればその人の詳細の情報が確認できます。
また、PhonebookEditor というロールを持っているユーザーは、Person 文書を新規作成したり、編集したり、削除できるようになっています。残すところはロケーション文書の新規作成、編集、削除というところでしょうか。

アプリケーションに必要なものは、PhonebookEditor ロールを持つユーザーが特定のロケーションを選択できるようロケーションの一覧を作成する必要があります。そしてそのロケーションを選択したらロケーション文書にリンクした Xpage を開くことができ、編集と削除ができるようにしなければなりません。そして、新規文書を作成するための「Create」アクションも必要になります。

この機能を実現するために 2 つの新規 Xpage を作成します。
ひとつは「LocationAdmin」、もうひとつは「LocationEdit」にします。
作成には既存の XPage をコピーしてから名前の変更をするといいでしょう。
それから「content_LocationAdmin」と「content_LocationEdit」の 2 つのカスタムコントロールを作成します。
この 2 つのカスタムコントロールは「lotusContent」スタイルクラスが指定されているパネルが一つだけの単純なものから始めます。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
       <xp:panel id="lotusContent" styleClass="lotusContent">

       </xp:panel>
</xp:view>
新しい 2 つの XPage にもどって、現在設定されている「content_...」のところを先ほど作成したカスタムコントロールにそれぞれ対応するように置き換えてください。
このようにコードを再利用するとレイアウトやルックアンドフィールを損なうことなく素早く作成することができます。

次に電話帳を編集することができるユーザーには「Location Administration」のセクションにアクセスできるようにしたいと思います。
左側のサイドバーに新しいメニューを作るか今あるメニューの中に単にリンクを追加するかどちらでも構いませんが、今回は後者の方を採用したいと思います。
では「sb_LocationList」カスタムコントロールを開いてください。

現在の「sb_LocationList」のソースビューでメニューリストの部分のコードは下のようになっています。

では赤い線のところに管理者用のリンクを追加していきます。まず新しいパネルをドラッグインし、ソースビューに切り替えます。そしてパネルが正しい位置に配置されたかを確認します。そしてそのパネルに「lotusMenuSection」というスタイルクラスを設定してください。
最後にパネルの内部に Unordered Line を追加して、仮のテキスト (link Here) を書いておきましょう。

ではカスタムコントロールを保存して、XPage をプリビューしましょう。
この時点では下のように表示されるはずです。

上で表示されたセクションは「PhonebookEditor」のロールを持っていないユーザーには表示したくないので、先ほど作成したパネルを選択して、プロパティの「表示」の横にあるダイアモンドをクリックしそのユーザーがロールを持っているかどうかを値の計算で以下の JavaScript を記述します。
var s1 = context.getUser().getRoles();
var s2 = "[PhonebookEditor]";
if (@Contains(s1, s2) == @True())
{
       return true;
} else
{
       return false;
}
パネル上の表示のプロパティを使用すると、表示の式の値が false であった場合、パネルとその中のコンテンツ全体がブラウザには送られないようになっています。
Web ページ全体が必要とされるまで隠しておくことができるよい方法でもあります。

では、次「リンク」コアコントロールを固定文字を書いたところに上書きする形でドラッグインしてます。
リンクのラベルには「Edit Locations」と指定し、「オープンページ」プロパティで「LocationAdmin」XPage を指定します。

ではこのカスタムコントロールを保存しブラウザでプリビューしてみましょう。ログイン後、ロールによってリンクが表示されたり、されなかったりすることを確認してください。

このリンクをクリックしてもまだ「LocationAdmin」XPage はコンテンツがブランクです。これは次回に回すことにします。

0 件のコメント:

コメントを投稿