3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

プリザンターのスクリプトで固有値を取得出来る関数として用意されている$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="[{&quot;SiteId&quot;:3526345,&quot;ReferenceType&quot;:&quot;Results&quot;,&quot;Title&quot;:&quot;記録テーブル(子テーブル)&quot;},{&quot;SiteId&quot;:3526346,&quot;ReferenceType&quot;:&quot;Issues&quot;,&quot;Title&quot;:&quot;期限付きテーブル(親テーブル)&quot;}]">
<input id="ReferenceType" name="ReferenceType" type="hidden" value="Results">
<input id="Columns" name="Columns" type="hidden" value="[{&quot;ColumnName&quot;:&quot;ClassA&quot;,&quot;LabelText&quot;:&quot;親テーブル&quot;},{&quot;ColumnName&quot;:&quot;Title&quot;,&quot;LabelText&quot;:&quot;子タイトル&quot;},{&quot;ColumnName&quot;:&quot;ClassB&quot;,&quot;LabelText&quot;:&quot;分類B&quot;},{&quot;ColumnName&quot;:&quot;DateB&quot;,&quot;LabelText&quot;:&quot;日付B&quot;},{&quot;ColumnName&quot;:&quot;NumB&quot;,&quot;LabelText&quot;:&quot;数値B&quot;},{&quot;ColumnName&quot;:&quot;Manager&quot;,&quot;LabelText&quot;:&quot;管理者&quot;},{&quot;ColumnName&quot;:&quot;Owner&quot;,&quot;LabelText&quot;:&quot;担当者&quot;},{&quot;ColumnName&quot;:&quot;ResultId&quot;,&quot;LabelText&quot;:&quot;ID&quot;},{&quot;ColumnName&quot;:&quot;Status&quot;,&quot;LabelText&quot;:&quot;状況&quot;},{&quot;ColumnName&quot;:&quot;Body&quot;,&quot;LabelText&quot;:&quot;内容&quot;},{&quot;ColumnName&quot;:&quot;TitleBody&quot;,&quot;LabelText&quot;:&quot;タイトル/内容&quot;},{&quot;ColumnName&quot;:&quot;UpdatedTime&quot;,&quot;LabelText&quot;:&quot;更新日時&quot;},{&quot;ColumnName&quot;:&quot;Comments&quot;,&quot;LabelText&quot;:&quot;コメント&quot;},{&quot;ColumnName&quot;:&quot;Updator&quot;,&quot;LabelText&quot;:&quot;更新者&quot;},{&quot;ColumnName&quot;:&quot;Ver&quot;,&quot;LabelText&quot;:&quot;バージョン&quot;},{&quot;ColumnName&quot;:&quot;ClassC&quot;,&quot;LabelText&quot;:&quot;分類C&quot;},{&quot;ColumnName&quot;:&quot;NumA&quot;,&quot;LabelText&quot;:&quot;数値A&quot;},{&quot;ColumnName&quot;:&quot;DateA&quot;,&quot;LabelText&quot;:&quot;日付A&quot;},{&quot;ColumnName&quot;:&quot;DescriptionA&quot;,&quot;LabelText&quot;:&quot;説明A&quot;},{&quot;ColumnName&quot;:&quot;AttachmentsA&quot;,&quot;LabelText&quot;:&quot;添付ファイルA&quot;},{&quot;ColumnName&quot;:&quot;AttachmentsB&quot;,&quot;LabelText&quot;:&quot;添付ファイルB&quot;},{&quot;ColumnName&quot;:&quot;ClassA~3526346,Title&quot;,&quot;LabelText&quot;:&quot;親タイトル&quot;}]">
<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">

何か見たことがある項目もいくつか並んでいますね。それぞれを細かく見てみましょう。

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.jsonMaxLengthCountTypeの値が格納されています。通常、ユーザ操作では触らないので説明は省略します。

data-validation-maxlength-regex

パラメータのValidation.jsonSingleByteCharactorRegexClientの値が格納されています。通常、ユーザ操作では触らないので説明は省略します。

BackUrl

window.history.previousで取得出来るURLと同等のデータが格納されています。違いとしてはプリザンター内部でのURL書換は除外されているデータが格納されているため、Ajax未使用時の編集画面リロードなどの影響を除外したURLを取得することが出来ます。

取得コード例
$('#BackUrl').val();

まとめ

今回はスクリプトで使用可能な変数群を紹介しました。これが使えると多言語対応やマルチロケール「ユーザ毎の差違」を吸収できるスクリプトを吸収できるスクリプトが書きやすくなります。是非使ってみてください。

  1. プリザンターのURLは/{コントローラ}/{ID(Site,Result etc.)}/{アクション}という構成になっています。 2 3

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?