Title: SDL Lesson 10 - ログイン済みかどうか=ビジターかどうか判別する
TeamPage には、「True か False か」を判定するタイプの関数がいくつか用意されています。この「True か False か」あるいは「Yes か No か」あるいは「白黒はっきりさせようじゃないか」のタイプを「Boolean 型」と呼びます。
Boolean 型の関数には、次のようなものがあります。(ほんの一例です)
journalrequest.user.visitor
... リクエストを行ったアカウントがビジターかどうか
project.active
... 当該スペースの状態がアクティブかどうか
entry.permissions.edit
... 当該記事を編集する権限があるかどうか
pm.features.allowed
... リクエストを行ったアカウントがプロジェクト管理機能(タスク、プロジェクト、マイルストーンの投稿など)の使用を許可されているかどうか
ここでは、上記 1. の journalrequest.user.visitor タグを使って、リクエストを行ったアカウントがビジターかどうかを判定してみます。
ファイルの作成
lesson10.properties
ダウンロード --> @1
ここでは新しく「lesson10」というビューを作成することにします。まずはビューの定義ファイル lesson10.properties を、プラグインの config/views/all に作成します。
テキストエディタで開いて次のように記述し、保存します。
sdl=com.traction.sdl.tutorial.lesson10
lesson09.sdl
ダウンロード --> @2
ビューの定義ファイル lesson10.properties で指定された lesson10.sdl を com/traction/sdl/tutorial に作成します。
テキストエディタで開いて次のように記述し、保存します。(文字エンコードは UTF-8 にしてください)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>SDL Tutorial</title>
<html.css url="/html/css/sdllessons/styles.css" />
</head>
<body>
<h1>あなたはビジター?それともユーザー?</h1>
<div class="container">
<journalrequest.user.visitor>
<p>あなたはビジターですね。</p>
<p><a href="/rs/login">ここをクリックして</a>ログインしてください。</p>
<else>
<p>あなたは __journalrequest.user.displayname__ ですね。</p>
<ul>
<li>ユーザー ID: __journalrequest.user.id__</li>
<li>ユーザー名: __journalrequest.user.name__</li>
<li>プロフィールページ: <a href="__journalrequest.user.url__">__journalrequest.user.url__</a></li>
</ul>
</journalrequest.user.visitor>
</div>
</body>
</html>
動作確認
sdl ファイルや properties ファイルを設置、編集した後は、必ずサーバーセットアップ > 一般 > サーバー管理 ページの [キャッシュのクリア] をクリックします。
TeamPage の検索ボックスに /type lesson10
と入力して Enter キーを押すと、下図のような「あなたはビジター?それともユーザー?」ビューが表示されます。
解説
journalrequest.user.visitor タグでビジターかどうか判定する
journalrequest.user.visitor
タグは、リクエストを行ったユーザーがビジターかどうかを返す、boolean 型の関数で、次のように使います。
<journalrequest.user.visitor>
<!--- true: ビジターがリクエストを行った場合 -->
<else>
<!--- false: ユーザーがリクエストを行った場合 -->
</journalrequest.user.visitor>
リクエストを行ったユーザーに関する情報を取得する
journalrequest.user.*
タグを使って、リクエストを行ったアカウントに関する情報を取得したり判定したりできます。
journalrequest.user.id
... リクエストを行ったアカウントの ID を返します。
journalrequest.user.name
... リクエストを行ったアカウントの名前(ログイン名)を返します。
journalrequest.user.displayname
... リクエストを行ったアカウントの表示名を返します。
journalrequest.user.url
... リクエストを行ったアカウントのプロフィールページの URL を返します。
journalrequest.user.active
... リクエストを行ったアカウントの状態がアクティブかどうかを true か false で返します。(boolean 型)
journalrequest.user.userpreferences.preferredemail
... リクエストを行ったアカウントの既定のメールアドレスを返します。
ラピッドセレクタを使って URL を指定する
TeamPage の操作コマンドである ラピッド セレクタ を URL で指定し、特定のページへアクセスしたり操作を行ったりできます。
URL でラピッドセレクタを使用するには、「Rapid Selector」の短縮形である「/rs」を指定し、続けて使用するラピッドセレクタを記述します。
例えば、ログイン画面への移動するラピッドセレクタは /login
なので、ログイン画面へ移動する URL は /rs/login になります。
<p><a href="/rs/login">ここをクリックするとログイン画面へ移動</a>してください。</p>
また、ロケールを英語に変更するラピッドセレクタは /locale en
で、ロケールを日本語に変更するラピッドセレクタは /locale ja
です。したがって、次のようなコードを記述することで、ロケールの日英を切り替えるリンクを作成できます。
<div class="locale">
<p>ロケールを切り替えるには下のリンクをクリックしてください。</p>
<p><a href="/rs/locale%20en">英語</a> <a href="/rs/locale%20ja">日本語</a></p>
</div>
まとめ
1. TeamPage には「何かが Yes か No か」(true か false か)を判定するのに使える、boolean 型の関数が用意されている。
2. その一例が journalrequest.user.visitor
で、リクエストを行ったユーザーがビジターかどうかを判定できる。
3. アカウントの情報を得るには journalrequest.user.*
タグを使う。
4. /rs/RapidSelectorName という URL へアクセスすることでラピッドセレクタを実行できる。