1.1.36.0 の変更点(.NET Core)
ソース基準日: 2021年7月12日(版を示すソースコミットの日付)。1.1.35.0 からの変更です。
機能追加・仕様変更
- API・拡張 — APIおよびサーバスクリプトによるレコードのアクセス制御の更新機能が加わった。
- API・拡張 — 一覧編集による更新時にサーバスクリプトのcontext.Errorの動作を利用できるようになった。
- API・拡張 — 一覧編集による更新時に行表示の前のサーバスクリプトの動作を利用できるようになった。
- API・拡張 — 画面表示の前及び行表示の前のサーバスクリプトにAddChoiceHashの動作を利用できるようになった。
- 画面・表示 — コピーダイアログのコピーボタンにID属性を利用できるようになった。
不具合修正
- API・拡張 — サーバスクリプトで完了項目に値がセットできない不具合を修正した。
- 画面・表示 — JSONフォーマットを使用したリンク項目で項目連携が正しく動作しない不具合を修正した。
- API・拡張 — 項目のアクセス制御とサーバスクリプトを使用した際に新規作成画面の項目が正しく表示できない不具合を修正した。
- API・拡張 — サーバスクリプトのTimeZoneInfoがnull参照違反となる不具合を修正した。
実装を読む
APIからレコードのアクセス制御を更新する
共通APIモデルに RecordPermissions を保持します。APIの入力値をレコードモデルへ渡し、値が null でない場合はレコードIDを指定して権限更新のSQLを追加します。未指定の場合と、値を指定した場合をNULLで区別しています(_BaseApiModel.cs、IssueModel.cs、IssueModel.cs)。
新規作成と更新で項目の権限判定を切り替える
サーバースクリプトへ渡す項目の読み取り専用判定で CanEdit を使います。項目側の CanEdit はアクションに応じて、new なら作成権限の判定へ分岐します。作成画面で更新権限だけを使ってしまう条件を改めています(ServerScriptUtilities.cs、Column.cs)。
タイムゾーン未設定のコンテキストを扱う
スクリプトのコンテキストに渡すタイムゾーン文字列は、context.TimeZoneInfo?.ToString() で求めます。タイムゾーンがNULLの場合でも、この文字列化で例外にしない変更です(ServerScriptModel.cs)。