『レコード詳細画面における「変更履歴」の「このバージョンに戻す」のボタンにアクセス権限を付ける方法』

はじめまして。

本日は『レコード詳細画面における「変更履歴」の「このバージョンに戻す」のボタンにアクセス権限を付ける方法』を
教えて頂きたく投稿致しました。

申請アプリのため、申請ユーザーには「このバージョンに戻す」ボタンを押せないようにしたいと思っております。

■変更履歴:「この前のバージョンに戻す」処理に権限設定ができないか
https://cybozudev.zendesk.com/hc/ja/community/posts/204394536-%E5%A4%89%E6%9B%B4%E5%B1%A5%E6%AD%B4-%E3%81%93%E3%81%AE%E5%89%8D%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E6%88%BB%E3%81%99-%E5%87%A6%E7%90%86%E3%81%AB%E6%A8%A9%E9%99%90%E8%A8%AD%E5%AE%9A%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%8B

上記の記事を読み、レコードの編集を不可にしたユーザーには「このバージョンに戻す」ボタンが
表示されないことは確認できました。

しかし、只今作成しているアプリは新規申請と変更申請を同一レコードで行います。
1レコードの流れは、下記のような流れです。
新規申請→新規登録→変更申請→変更登録→変更申請→変更登録→・・・

そのため、申請ユーザーは、新規申請→新規登録や、変更申請→変更登録の間は編集不可ですが、
新規登録→変更申請や、変更登録→変更申請の間は編集可能にしているため、
この間は「このバージョンに戻す」ボタンが表示されてしまいます。

ユーザーでのアクセス権限が難しいようであれば、常に非表示にする(編集はできて)でもかまいませんので
お教え頂けますと幸いです。

それでは、皆様のお力添えをよろしくお願い致します。

 

大西さん、こんにちは。

標準機能でやろうとした場合、APIが存在しないので、アクセス権で制御するしかないかと思いますが、今回の場合は難しいかもしれませんね。。。

DOM操作で強引に行く方法がいくつかあるかと思いますが、保証されていないので、利用する場合には注意が必要です。

以下のようにして、今回の対象である、「このバージョンに戻す」にあたる「itemlist-footer-restore-gaia」を操作することで、非表示もしくは削除ができます。

document.getElementsByClassName(‘itemlist-footer-restore-gaia’)[0].style.display = ‘none’;

 

 

サクラエビさん

ご意見頂き、誠にありがとうございます。

さっそく試してみたいと思います。

サクラエビさん

先程はご教授誠にありがとうございました。
教えて頂いたとおり下記のJSを設定いたしましたところ非表示にできました。

(function() {
    “use strict”;
    kintone.events.on(‘app.record.detail.show’, function(event) {//レコードの編集イベント
        document.getElementsByClassName(‘itemlist-footer-restore-gaia’)[0].style.display = ‘none’;
        return event;
    });
})();

しかし、変更履歴の最新の情報のみ非表示になり、それ以前は非表示になりません。

変更履歴の最初から最後までの情報を取得することはできないそうなので
全ての「このバージョンに戻す」のボタンを非表示にすることはやはり難しいのでしょうか?

■変更履歴の取得
https://cybozudev.zendesk.com/hc/ja/community/posts/201327214-%E5%A4%89%E6%9B%B4%E5%B1%A5%E6%AD%B4%E3%81%AE%E5%8F%96%E5%BE%97

 

お返事頂けますと幸いです。
よろしくお願い致します。

無事消せたようでよかったです。

すべて消すのであれば、lengthの中に件数があるので、そこから変更履歴の件数をとって、取得件数分処理を行うことで、すべて消すことができますよ。

 document.getElementsByClassName(‘itemlist-footer-restore-gaia’).length;

 

消すときに、~[0].style.~のところの数字でどこを消すか決めています。

0の場合一番上の履歴を消します。

ここを変数にして、for文で回数分回してあげるとすべて消せるかと思います。

サクラエビさん

前回に引き続きお返事頂きまして誠にありがとうございます。

サクラエビさんにお教え頂いたとおりに記載したところ、
全ての「このバージョンに戻す」を消すことができました。

しかし、「変更履歴」のタブを開いた際には消えず、
タブを開いた後、F5を押して更新をすると消える状態でございます。
「変更履歴」を押したときに動作させるにはどのように記載すればいいのかをお教え頂けますと幸いです。

そのイベントが分からず、現在は下記のようにレコード一覧画面とレコード詳細画面を開いたときでJSを書いております。

(function() {
    “use strict”;
    kintone.events.on([‘app.record.detail.show’,
       ‘app.record.index.show’], function(event) {
        var len = document.getElementsByClassName(‘itemlist-footer-restore-gaia’).length;
        for (var i = 0; i < len; i++) {
            document.getElementsByClassName(‘itemlist-footer-restore-gaia’)[i].style.display = ‘none’;
        }
        return event;
    });
})();

ご教授頂けますと幸いです。
よろしくお願い致します。