6つのプラグインを更新しました(他の JavaScript カスタマイズの影響を受けにくくしました)
kintone プラグイン 6 製品を更新しました。機能・設定項目の追加や変更はありません。いずれも「同じアプリに入っている他の JavaScript カスタマイズの影響を受けにくくする」ための修正です。
何が起きていたか
kintone は、アプリの JavaScript カスタマイズを読み込んでから、プラグインを読み込みます。そしてレコード画面の表示イベントは登録された順に実行されます。
そのため、先に読み込まれたカスタマイズが 1 つでもエラーを起こすと、そのあとに読み込まれるプラグインは実行されません。ボタンが出ない・タブが出ないといった「見て分かる」不具合であれば気づけますが、表示や編集を制限するタイプのプラグインでは「制限が効かないまま普通に見えている」状態になり、気づきにくいという問題がありました。
対応した内容
1. 自分のエラーで、ほかのプラグインを止めない
各プラグインのイベント処理を保護し、万一エラーが起きてもそこで処理チェーンを止めないようにしました。これにより、同じアプリに入っている他社製プラグインを巻き込むことがなくなります。この対応は当社の全プラグインに順次入れており、今回更新した 6 製品には適用済みです。
なお、保存時の処理(submit 系)は保護の対象外にしています。保存を止めるべき場面で保存が通ってしまうことを防ぐためです。
2. イベントが届かなくても、自力で制御する
表示・編集を制限するタイプの 6 製品には、表示イベントが届かなかった場合に、プラグイン自身が画面の状態を判定して制御を実行する仕組みを追加しました。他のカスタマイズの状態に左右されず、制限が効いた状態を保てます。
対象製品
| 製品 | 版 |
|---|---|
| アコーディオンタブ | v2.0.3 |
| 属性制御フィルター | v1.0.3 |
| コメントコントロール | v1.0.4 |
| 条件分岐フォーム | v2.2.1 |
| レコードロック | v1.0.5 |
| レコード再利用コントロール | v1.0.2 |
先に公開した 一覧コントロール v1.0.1 も同じ問題への対応を含んでいます。
更新のしかた
kintone プラグインは自動更新されません。お手数ですが、下記の手順で上書きアップロードしてください。アプリに保存済みのプラグイン設定はそのまま引き継がれます。
- 各製品ページから最新版の zip をダウンロード
- kintone の「kintone システム管理」→「プラグイン」から、同じプラグインを上書きアップロード
- プラグインを利用しているアプリで「アプリの更新」を実行
なお、上記のプラグインを単独で使っている(他の JavaScript カスタマイズを入れていない)アプリでは、これまでも問題は起きていません。急いで更新する必要はありませんが、カスタマイズと併用しているアプリでは適用をおすすめします。