スクリプトで使えるシステム変数
$p.userId や $p.siteId などの関数は、画面の body 内に出力されている type="hidden" の input 要素から値を取得しています。 このページでは、その Hidden 要素の一覧と、関数としては用意されていないものの $('#ID').val() で取得できる値、ログインユーザの所属グループを取得する $p.groupIds の使い方をまとめます。
データ源泉は Hidden 要素
画面の body 要素内には、次のような Hidden 要素が複数出力されています。スクリプトのシステム変数はここに格納されている値が源泉です。
<input id="ApplicationPath" name="ApplicationPath" type="hidden" value="/">
<input id="Language" name="Language" type="hidden" value="ja">
<input id="TimeZoneOffset" name="TimeZoneOffset" type="hidden" value="+09:00">
<input id="YmdFormat" name="YmdFormat" type="hidden" value="yyyy/MM/dd">
<input id="YmdDatePickerFormat" name="YmdDatePickerFormat" type="hidden" value="Y/m/d">
<input id="DeptId" name="DeptId" type="hidden" value="1">
<input id="UserId" name="UserId" type="hidden" value="3">
<input id="LoginId" name="LoginId" type="hidden" value="user@example.com">
<input id="Theme" name="Theme" type="hidden" value="cerulean">
<input id="TableName" name="TableName" type="hidden" value="Results">
<input id="Controller" name="Controller" type="hidden" value="items">
<input id="Action" name="Action" type="hidden" value="index">
<input id="Id" name="Id" type="hidden" value="3526345">
<input id="TenantId" name="TenantId" type="hidden" value="1">
<input id="SiteId" name="SiteId" type="hidden" value="3526345">
<input id="JoinedSites" name="JoinedSites" type="hidden" value="[...]">
<input id="ReferenceType" name="ReferenceType" type="hidden" value="Results">
<input id="Columns" name="Columns" type="hidden" value="[...]">
<input id="ReplaceFieldColumns" name="ReplaceFieldColumns" type="hidden" value="[]">
<input id="Log" name="Log" type="hidden" value="{"Log":""}">
<input id="AnchorTargetBlank" name="AnchorTargetBlank" type="hidden" value="1">
<input id="data-validation-maxlength-type" name="data-validation-maxlength-type" type="hidden" value="Character">
<input id="data-validation-maxlength-regex" name="data-validation-maxlength-regex" type="hidden" value="x01-x7EuFF65-uFF9F">
<input id="BackUrl" name="BackUrl" type="hidden" value="/items/3457307/index">JoinedSites と Columns の value は JSON 文字列です(上の例では省略しています)。
一覧
「対応する関数」は、確認したソースで Hidden 要素の値を返す $p 関数が定義されているものです(_elements.js、siteinfo.js)。
| ID | 対応する関数 | 内容 |
|---|---|---|
ApplicationPath | — | サイトルートのパス |
Language | — | ログインユーザの言語設定 |
TimeZoneOffset | — | ログインユーザの UTC からのタイムゾーンオフセット |
YmdFormat | — | 言語から逆引きされる日付フォーマット |
YmdDatePickerFormat | — | DateTimePicker で使用するフォーマット |
DeptId | $p.deptId | ユーザの組織 ID |
UserId | $p.userId | ユーザのユーザ ID |
LoginId | $p.loginId | ユーザのログイン ID |
Theme | $p.theme | ログインユーザのテーマ名 |
TableName | $p.tableName | サイトの種類 |
Controller | $p.controller | コントローラの種類 |
Action | $p.action | アクションの種類 |
Id | $p.id | ID |
TenantId | — | テナント ID |
SiteId | $p.siteId | サイト ID |
JoinedSites | — | リンクされているテーブルの情報(JSON) |
ReferenceType | $p.referenceType | TableName とほぼ同値 |
Columns | — | 一覧に表示されている列の情報(JSON) |
ReplaceFieldColumns | — | サーバースクリプトの columns で操作したフィールド(JSON) |
Log | — | サーバースクリプトなどでセットされたログ情報 |
AnchorTargetBlank | — | 「編集画面を新しいタブで開く」が有効なとき 1 |
data-validation-maxlength-type | — | Validation.json の MaxLengthCountType の値 |
data-validation-maxlength-regex | — | Validation.json の SingleByteCharactorRegexClient の値 |
BackUrl | — | window.history.previous 相当の URL |
GroupIds | $p.groupIds | ログインユーザの所属グループ(1.4.18.0 以降。後述) |
URL の構成
プリザンターの URL は /{コントローラ}/{ID(Site,Result etc.)}/{アクション} という構成です。Controller / Id / Action はそれぞれこの部分に対応します。
関数化されていない値の詳細
ApplicationPath
プリザンターのサイトルートのパスが格納されます。Pleasanter.net のようにサブディレクトリ環境で運用している場合はサブディレクトリの情報が入ります(Pleasanter.net の場合は /fs/)。 スクリプト内でパスを指定する必要があるときにこの値を使うと、サイトパッケージの出し入れ時に書き換える箇所を減らせます。
$('#ApplicationPath').val();Language
ログインユーザの言語設定です。取り得る値は ja / en / zh / de / ko / es / vn です。スクリプトに固定文言を埋め込む際の多言語対応などに使います。
$('#Language').val();TimeZoneOffset
ログインユーザの UTC からのタイムゾーンオフセットです。
$('#TimeZoneOffset').val();YmdFormat / YmdDatePickerFormat
YmdFormat には Language から逆引きされるフォーマット情報が設定されます。データの源泉は次の JSON です。
主にカレンダーなどで表示される日付文字列のフォーマットに使われます。多言語対応でロケールによって表示を切り替えるときに使います。
$('#YmdFormat').val();YmdDatePickerFormat には DateTimePicker で使用するフォーマットが格納されます。
Theme
ログインユーザのテーマ名です。第 1 世代・第 2 世代テーマ間でスタイルなどを切り替える必要がある場合に使います。 取り得る値は次の定義ファイルの ChoicesText を参照してください。
$('#Theme').val();TenantId
ログインユーザが所属するテナントの ID です。セルフホスティングで通常のシングルテナント運用をしている場合は、初期化時に作成される既定テナント(TenantId = 1)の値 1 になります(TenantInitializer.cs、HtmlTemplates.cs)。
$('#TenantId').val();JoinedSites
テーブルに対してリンクされているテーブルの情報が JSON で格納されます。
JSON.parse($('#JoinedSites').val());[
{
"SiteId": 3526345,
"ReferenceType": "Results",
"Title": "記録テーブル(子テーブル)"
},
{
"SiteId": 3526346,
"ReferenceType": "Issues",
"Title": "期限付きテーブル(親テーブル)"
}
]ReferenceType
TableName とほぼ同値です。
$('#ReferenceType').val();Columns
記録テーブル・期限付きテーブルの一覧表示の場合に、表示されている列の情報が JSON で格納されます。
JSON.parse($('#Columns').val());[
{ "ColumnName": "ClassA", "LabelText": "親テーブル" },
{ "ColumnName": "Title", "LabelText": "子タイトル" },
{ "ColumnName": "ResultId", "LabelText": "ID" },
{ "ColumnName": "Status", "LabelText": "状況" },
{ "ColumnName": "UpdatedTime", "LabelText": "更新日時" },
{ "ColumnName": "ClassA~3526346,Title", "LabelText": "親タイトル" }
]ReplaceFieldColumns
サーバースクリプトの columns でフィールドに対して操作を行ったフィールドの情報が格納されます。
JSON.parse($('#ReplaceFieldColumns').val());["ClassA", "CheckB"]Log
サーバースクリプトなどでセットされたログ情報をコンソールに出力するときに使われる項目です。
AnchorTargetBlank
編集画面を新しいタブで開くが有効になっているときに 1 が格納されます。
data-validation-maxlength-type / data-validation-maxlength-regex
それぞれパラメータ Validation.json の MaxLengthCountType と SingleByteCharactorRegexClient の値が格納されます。通常のユーザ操作で使うことはありません。
BackUrl
window.history.previous で取得できる URL と同等のデータが格納されます。プリザンター内部での URL 書き換えを除外した値が入るため、Ajax 未使用時の編集画面リロードなどの影響を除いた URL を取得できます。
$('#BackUrl').val();$p.groupIds(所属グループの取得) 1.4.18.0 以降
バージョン 1.4.18.0 で、ログインユーザの所属グループを取得する $p.groupIds が追加されました。サーバースクリプトの context.Groups 相当の情報をスクリプトで取得するためのものです。
使い方
$p.apiGroupsGet と組み合わせると、ログインユーザの所属グループの一覧を取得できます。
$p.apiGroupsGet({
data: {
View: {
ColumnFilterHash: {
GroupId: JSON.stringify($p.groupIds())
}
}
},
done: function (data) {
console.log(data);
}
});$p.groupIds の値も他のシステム変数と同じく Hidden 要素(GroupIds)から取得しているため、次のようにも書けます。
$p.apiGroupsGet({
data: {
View: {
ColumnFilterHash: {
GroupId: $('#GroupIds').val()
}
}
},
done: function (data) {
console.log(data);
}
});活用例
編集画面で選択肢一覧に [[Groups]] を使う場合など、ログインユーザのグループ情報で画面を制御する用途を想定しています。たとえば、所属グループ固有の項目があるときに、所属グループによってその項目の表示・非表示を切り替えるといった使い方です。