通知の一括既読

通知画面もしくはポータル画面から、今来ている通知を一括既読するカスタマイズを行いたいです。

通知一覧の画面でのイベントが探してもなかったため、ポータル画面表示時に、上部にボタンを作成して通知を既読にしようとしましたが、既読にする部分のコードがわからず止まっています。
コミュニティ内に通知一覧画面で「$(“.ocean-ntf-ntfitem-mark[title=既読にする]”).click();をする」といいといった記述がありましたが、どう使えばいいかわからない状態です。

手助け頂けると助かります。

逆に提示されている部分以外は問題なさそうですかね、その実装方法にもよるかもしれませんが、
設置したとおっしゃっているボタンのonclick時に提示されているコードを実行すると消せるという感じですね。
提示されているものだとjQueryを使う前提になってますね。
jQuery使わない版で、ボタンを押したときに発火する場合はこうなるかなと

yourButton.onclick = () => {  // ご自身で用意したボタンにonclickイベントを定義します
  // 条件に当てはまる要素を全て取得し、forEachでループしてclickします
  document.querySelectorAll(".ocean-ntf-ntfitem-mark[title=既読にする]").forEach((element) => element.click());
}

ありがとうございます!
提示いただいた記述を組み込んで下記コードで無事実装できました。

本音を言いますと、現在イベントをportal.showにしていますが、ここを「通知一覧画面を開いたとき」かつ「指定のユーザーにだけボタンを出す」ことは可能でしょうか。
可能でしたらどのような記述になるか参考をお願いしたいです。

(() => {
  'use strict';
  kintone.events.on('portal.show', (event) => {
    if (document.getElementById('my_index_button') !== null) {
      return;
    }

    const myIndexButton = document.createElement('button');
    myIndexButton.id = 'my_index_button';
    myIndexButton.innerText = '一括既読';

    // ボタンクリック時の処理
    myIndexButton .onclick = () => {  
      document.querySelectorAll(".ocean-ntf-ntfitem-mark[title=既読にする]").forEach((element) => element.click());
    }

    kintone.portal.getContentSpaceElement().appendChild(myIndexButton);
  });
})();

ユーザーは kintone.getLoginUser() で取得できますよ。リファレンス

code にログイン名がはいるので、if文等で条件分岐するといいかとおもいます。
また、通知一覧画面を開いたとき、のイベントはありませんので、毎回URLを確認するしかないとおもいます。

const currentUrl = window.location.href;
if(currentUrl.includes('/k/#/ntf/mention')) {
...
}
1 Like

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。