Skip to content

スクリプトで使えるシステム変数 ​

第6版作成 最終更新 (日本時間)
確認バージョン1.5.8.1

$p.userId や $p.siteId などの関数は、画面の body 内に出力されている type="hidden" の input 要素から値を取得しています。 このページでは、その Hidden 要素の一覧と、関数としては用意されていないものの $('#ID').val() で取得できる値、ログインユーザの所属グループを取得する $p.groupIds の使い方をまとめます。

データ源泉は Hidden 要素 ​

画面の body 要素内には、次のような Hidden 要素が複数出力されています。スクリプトのシステム変数はここに格納されている値が源泉です。

html
<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="{&quot;Log&quot;:&quot;&quot;}">
<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.idID
TenantId—テナント ID
SiteId$p.siteIdサイト ID
JoinedSites—リンクされているテーブルの情報(JSON)
ReferenceType$p.referenceTypeTableName とほぼ同値
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/)。 スクリプト内でパスを指定する必要があるときにこの値を使うと、サイトパッケージの出し入れ時に書き換える箇所を減らせます。

js
$('#ApplicationPath').val();

Language ​

ログインユーザの言語設定です。取り得る値は ja / en / zh / de / ko / es / vn です。スクリプトに固定文言を埋め込む際の多言語対応などに使います。

js
$('#Language').val();

TimeZoneOffset ​

ログインユーザの UTC からのタイムゾーンオフセットです。

js
$('#TimeZoneOffset').val();

YmdFormat / YmdDatePickerFormat ​

YmdFormat には Language から逆引きされるフォーマット情報が設定されます。データの源泉は次の JSON です。

主にカレンダーなどで表示される日付文字列のフォーマットに使われます。多言語対応でロケールによって表示を切り替えるときに使います。

js
$('#YmdFormat').val();

YmdDatePickerFormat には DateTimePicker で使用するフォーマットが格納されます。

Theme ​

ログインユーザのテーマ名です。第 1 世代・第 2 世代テーマ間でスタイルなどを切り替える必要がある場合に使います。 取り得る値は次の定義ファイルの ChoicesText を参照してください。

js
$('#Theme').val();

TenantId ​

ログインユーザが所属するテナントの ID です。セルフホスティングで通常のシングルテナント運用をしている場合は、初期化時に作成される既定テナント(TenantId = 1)の値 1 になります(TenantInitializer.cs、HtmlTemplates.cs)。

js
$('#TenantId').val();

JoinedSites ​

テーブルに対してリンクされているテーブルの情報が JSON で格納されます。

js
JSON.parse($('#JoinedSites').val());
json
[
 {
  "SiteId": 3526345,
  "ReferenceType": "Results",
  "Title": "記録テーブル(子テーブル)"
 },
 {
  "SiteId": 3526346,
  "ReferenceType": "Issues",
  "Title": "期限付きテーブル(親テーブル)"
 }
]

ReferenceType ​

TableName とほぼ同値です。

js
$('#ReferenceType').val();

Columns ​

記録テーブル・期限付きテーブルの一覧表示の場合に、表示されている列の情報が JSON で格納されます。

js
JSON.parse($('#Columns').val());
json
[
 { "ColumnName": "ClassA", "LabelText": "親テーブル" },
 { "ColumnName": "Title", "LabelText": "子タイトル" },
 { "ColumnName": "ResultId", "LabelText": "ID" },
 { "ColumnName": "Status", "LabelText": "状況" },
 { "ColumnName": "UpdatedTime", "LabelText": "更新日時" },
 { "ColumnName": "ClassA~3526346,Title", "LabelText": "親タイトル" }
]

ReplaceFieldColumns ​

サーバースクリプトの columns でフィールドに対して操作を行ったフィールドの情報が格納されます。

js
JSON.parse($('#ReplaceFieldColumns').val());
json
["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 を取得できます。

js
$('#BackUrl').val();

$p.groupIds(所属グループの取得) 1.4.18.0 以降 ​

バージョン 1.4.18.0 で、ログインユーザの所属グループを取得する $p.groupIds が追加されました。サーバースクリプトの context.Groups 相当の情報をスクリプトで取得するためのものです。

使い方 ​

$p.apiGroupsGet と組み合わせると、ログインユーザの所属グループの一覧を取得できます。

js
$p.apiGroupsGet({
    data: {
        View: {
            ColumnFilterHash: {
                GroupId: JSON.stringify($p.groupIds())
            }
        }
    },
    done: function (data) {
        console.log(data);
    }
});

$p.groupIds の値も他のシステム変数と同じく Hidden 要素(GroupIds)から取得しているため、次のようにも書けます。

js
$p.apiGroupsGet({
    data: {
        View: {
            ColumnFilterHash: {
                GroupId: $('#GroupIds').val()
            }
        }
    },
    done: function (data) {
        console.log(data);
    }
});

活用例 ​

編集画面で選択肢一覧に [[Groups]] を使う場合など、ログインユーザのグループ情報で画面を制御する用途を想定しています。たとえば、所属グループ固有の項目があるときに、所属グループによってその項目の表示・非表示を切り替えるといった使い方です。

関連ページ ​

変更履歴

第6版記事の確認版を繰り返す表現を整理する
第5版「機能の仕様と使いこなし」「スクリプト」「サーバースクリプト」に対応バージョンを表示
第4版「スクリプト」を 1.5.8.1 のソースで検証して修正
第3版元記事への言及を整理し、必要なコードをページに収録。検索機能に一覧の検索と絞り込みを追加
第2版記事のファイル名に並び順の番号を付け、元記事リンクを frontmatter の sources に移行
第1版「スクリプト」セクションの記事を追加