slack

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

2009/12/18

XPages Tutorial Part 7: バナーのログイン/ログアウトボタン

The Banner Login/Logout Button {Original Source}

前回は一見 LotusScript と 式言語の組み合わせのように見えるサーバーサイドの JavaScript について見ながらバナーに現在ログインしているユーザー名を表示させることをやりました。
今回はユーザーにログインログアウトしてもらう方法を提供しこのバナーを完成させたいと思います。

では「layout_Banner」カスタムコントロールを開き始めていきましょう。前回行ったリストを確認して、プレースホルダーの 2 番目のところを削除します。そして、新しいコントロールをドラッグアンドドロップで追加します。今回使用するのは「リンク」コントロールです。
配置が終わったらソースタブを開き、<li> タブの間を上記にようにします。これまで見てきたものと異なり、ここでは「ログイン」か「ログアウト」の二者択一のラベルし、ユーザーがこのリンクをクリックすることで切り替わるような仕組むが必要になります。

XPage コントロールのほとんどすべてのプロパティでは計算の結果を表示させることができます。それぞれのプロパティの右にある小さなダイアモンドを探してください。このダイアモンドが青色になっている場合はそのプロパティに計算結果の値が設定されていることになります。

そのダイアモンドをクリックして、「値の計算」を選び下のコードを入力してください。

var userName:NotesName = session.createName(@UserName());
if (userName.getCommon()=="Anonymous")
{
       var rtnvalue = "Log In"
}
else
{
       var rtnvalue = "Logout"
}
return(rtnvalue);

ここでは以前バナーのところでやったのと同じように userName をセットしていますが、今回は条件の分岐として IF THEN ELSE のステートメントの形でログイン、ログアウト表示を文字として返しています。URL に関しても全く同様です。

var userName:NotesName = session.createName(@UserName());
if (userName.getCommon()=="Anonymous")
{
       facesContext.getExternalContext().getRequestContextPath() + "?login"
}
else
{
       facesContext.getExternalContext().getRequestContextPath() + "?logout"
}

今回ただ文字を返すだけではなく計算された結果の値を表示させるようにします。
externalContext 上の .getRequestContextPath はアプリケーションのどの URL に飛んでいくかを指定する方法です。'?login' と '?logout' はLotus Domino の 標準的な構成でログインやログアウトする際に使用されます。これは XPages アプリケーション以外でも使用できる構成です。この外部コンテキストパスを使って URL をハードコーディングすることなく変数を与えることでどのサーバーでも、どのデータベースでも移動することができます。

では保存して XPage をブラウザで表示させると次のようになると思います。
または
Xpage アプリケーションの最初のレイアウトが完成しました。ここまでやってきた内容は以下のダウンロードリンクにあるデータベースと同じになるはずです。
これまでに、アプリケーションのレイアウトとそれを構成する部品をカスタムコントロールとして作成し、それを XPage に組み込むことでページを完成することを学んできました。
そしてイメージの取り扱いやアイテムリストの中に html のコードを組み込んで表示を切り替えること、最後にはサーバーサイド JavaScript を使って計算結果フィールドを使って表示する内容を切り替えることを学んできました。

次回はタイトルバーについて見ていきたいと思います。

ダウンロードファイル: xPhoneP7.zip

0 件のコメント:

コメントを投稿