はじめに
プリザンターのスクリプトで固有値を取得出来る関数として用意されている$p.userId
や$p.deptId
などの関数。この関数の値はどこから取得されているのか、また関数として用意はされていないけど取得出来る項目があるのでそれを紹介します。
源泉はどこから?
body
要素にtype="hidden"
となっているinput
が複数あります。ここに格納されている値が源泉となっています。実際に中身を見てみます。
<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="Pleasanter@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="[{"SiteId":3526345,"ReferenceType":"Results","Title":"記録テーブル(子テーブル)"},{"SiteId":3526346,"ReferenceType":"Issues","Title":"期限付きテーブル(親テーブル)"}]">
<input id="ReferenceType" name="ReferenceType" type="hidden" value="Results">
<input id="Columns" name="Columns" type="hidden" value="[{"ColumnName":"ClassA","LabelText":"親テーブル"},{"ColumnName":"Title","LabelText":"子タイトル"},{"ColumnName":"ClassB","LabelText":"分類B"},{"ColumnName":"DateB","LabelText":"日付B"},{"ColumnName":"NumB","LabelText":"数値B"},{"ColumnName":"Manager","LabelText":"管理者"},{"ColumnName":"Owner","LabelText":"担当者"},{"ColumnName":"ResultId","LabelText":"ID"},{"ColumnName":"Status","LabelText":"状況"},{"ColumnName":"Body","LabelText":"内容"},{"ColumnName":"TitleBody","LabelText":"タイトル/内容"},{"ColumnName":"UpdatedTime","LabelText":"更新日時"},{"ColumnName":"Comments","LabelText":"コメント"},{"ColumnName":"Updator","LabelText":"更新者"},{"ColumnName":"Ver","LabelText":"バージョン"},{"ColumnName":"ClassC","LabelText":"分類C"},{"ColumnName":"NumA","LabelText":"数値A"},{"ColumnName":"DateA","LabelText":"日付A"},{"ColumnName":"DescriptionA","LabelText":"説明A"},{"ColumnName":"AttachmentsA","LabelText":"添付ファイルA"},{"ColumnName":"AttachmentsB","LabelText":"添付ファイルB"},{"ColumnName":"ClassA~3526346,Title","LabelText":"親タイトル"}]">
<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">
何か見たことがある項目もいくつか並んでいますね。それぞれを細かく見てみましょう。
ApplicationPath
プリザンターのサイトルートのパスが格納されます。Pleasanter.netのようにサブディレクトリ環境で運用されている時にはサブディレクトリの情報が格納されます。Pleasanter.netの場合は/fs/
が格納されています。
パスを指定する必要がある場合にこの値を使用すると、サイトパッケージの出し入れを行う時に書換をおこなう場所を少なくすることが出来ます。
$('#ApplicationPath').val();
Language
ログインユーザの言語設定情報が出力されます。取り得る値はja/en/zh/de/ko/es/vn
になります。スクリプトで固定文言を埋め込む時などに多言語対応をする時などに使用します。
$('#Language').val();
TimeZoneOffset
ログインユーザーのUTCからのタイムゾーンオフセットが格納されています。
$('#TimeZoneOffset').val();
YmdFormat
Languageから逆引きされるフォーマット情報が設定されています。データの源泉は下記のJSONです。
主にカレンダーなどで表示されている日付文字列のフォーマットに使用されます。これも多言語対応をするときにロケールによって表示を切り替える時に使用します。
$('#YmdFormat').val();
YmdDatePickerFormat
DateTimePickerで使用するフォーマットが格納されています。
DeptId
$p.deptId
のデータ源泉です。ユーザの組織IDが格納されています。
UserId
$p.userId
のデータ源泉です。ユーザのユーザIDが格納されています。
LoginId
$p.loginId
のデータ源泉です。ユーザのログインIDが格納されています。
Theme
ログインユーザのテーマ名が格納されています。第1世代・第2世代テーマ間でスタイルなどを切り替える必要がある場合に使用します。
取り得る値は下記のコードを参考にしてください。
ChoicesText
に格納されています。
$('#Theme').val();
TableName
$p.tableName
のデータ源泉です。サイトの種類が格納されています。
Controller
$p.controller
のデータ源泉です。コントローラ1の種類が格納されています。
Action
$p.action
のデータ源泉です。アクション1の種類が格納されています。
Id
$p.id
のデータ源泉です。ID1が格納されています。
TenantId
マルチテナントモードで運用している場合にテナントIDが格納されています。Pleasater.net以外のセルフホスティングの場合は、通常はシングルテナントで運用するため値は0
に固定されます。
$('#TenantId').val();
SiteId
$p.siteId
のデータ源泉です。サイトIDが格納されています。
JoinedSites
デーブルに対してリンクされているテーブルの情報が格納されています。
JSON.parse($('#JoinedSites').val());
[
{
"SiteId": 3526345,
"ReferenceType": "Results",
"Title": "記録テーブル(子テーブル)"
},
{
"SiteId": 3526346,
"ReferenceType": "Issues",
"Title": "期限付きテーブル(親テーブル)"
}
]
ReferenceType
TableName
とほぼ同値になります。
$('#ReferenceType').val();
Columns
記録テーブル・期限付き記録テーブルの一覧表示の場合に、表示されている列の情報が格納されています。
JSON.parse($('#Columns').val());
[
{
"ColumnName": "ClassA",
"LabelText": "親テーブル"
},
{
"ColumnName": "Title",
"LabelText": "子タイトル"
},
{
"ColumnName": "ClassB",
"LabelText": "分類B"
},
{
"ColumnName": "DateB",
"LabelText": "日付B"
},
{
"ColumnName": "NumB",
"LabelText": "数値B"
},
{
"ColumnName": "Manager",
"LabelText": "管理者"
},
{
"ColumnName": "Owner",
"LabelText": "担当者"
},
{
"ColumnName": "ResultId",
"LabelText": "ID"
},
{
"ColumnName": "Status",
"LabelText": "状況"
},
{
"ColumnName": "Body",
"LabelText": "内容"
},
{
"ColumnName": "TitleBody",
"LabelText": "タイトル/内容"
},
{
"ColumnName": "UpdatedTime",
"LabelText": "更新日時"
},
{
"ColumnName": "Comments",
"LabelText": "コメント"
},
{
"ColumnName": "Updator",
"LabelText": "更新者"
},
{
"ColumnName": "Ver",
"LabelText": "バージョン"
},
{
"ColumnName": "ClassC",
"LabelText": "分類C"
},
{
"ColumnName": "NumA",
"LabelText": "数値A"
},
{
"ColumnName": "DateA",
"LabelText": "日付A"
},
{
"ColumnName": "DescriptionA",
"LabelText": "説明A"
},
{
"ColumnName": "AttachmentsA",
"LabelText": "添付ファイルA"
},
{
"ColumnName": "AttachmentsB",
"LabelText": "添付ファイルB"
},
{
"ColumnName": "ClassA~3526346,Title",
"LabelText": "親タイトル"
}
]
ReplaceFieldColumns
サーバスクリプトのcolumns
でフィールドに対して操作をおこなったフィールドの情報が格納されています。
JSON.parse($('#ReplaceFieldColumns').val());
["ClassA", "CheckB"]
Log
サーバスクリプトなどでセットされたログ情報をコンソールに吐き出すときに使用する項目です。
AnchorTargetBlank
編集画面を新しいタブで開くが有効になっているときに1
が格納されます。
data-validation-maxlength-type
パラメータのValidation.json
のMaxLengthCountType
の値が格納されています。通常、ユーザ操作では触らないので説明は省略します。
data-validation-maxlength-regex
パラメータのValidation.json
のSingleByteCharactorRegexClient
の値が格納されています。通常、ユーザ操作では触らないので説明は省略します。
BackUrl
window.history.previous
で取得出来るURLと同等のデータが格納されています。違いとしてはプリザンター内部でのURL書換は除外されているデータが格納されているため、Ajax未使用時の編集画面リロードなどの影響を除外したURLを取得することが出来ます。
$('#BackUrl').val();
まとめ
今回はスクリプトで使用可能な変数群を紹介しました。これが使えると多言語対応やマルチロケール「ユーザ毎の差違」を吸収できるスクリプトを吸収できるスクリプトが書きやすくなります。是非使ってみてください。