isa
1
通知画面もしくはポータル画面から、今来ている通知を一括既読するカスタマイズを行いたいです。
通知一覧の画面でのイベントが探してもなかったため、ポータル画面表示時に、上部にボタンを作成して通知を既読にしようとしましたが、既読にする部分のコードがわからず止まっています。
コミュニティ内に通知一覧画面で「$(“.ocean-ntf-ntfitem-mark[title=既読にする]”).click();をする」といいといった記述がありましたが、どう使えばいいかわからない状態です。
手助け頂けると助かります。
mura
2
逆に提示されている部分以外は問題なさそうですかね、その実装方法にもよるかもしれませんが、
設置したとおっしゃっているボタンのonclick時に提示されているコードを実行すると消せるという感じですね。
提示されているものだとjQueryを使う前提になってますね。
jQuery使わない版で、ボタンを押したときに発火する場合はこうなるかなと
yourButton.onclick = () => { // ご自身で用意したボタンにonclickイベントを定義します
// 条件に当てはまる要素を全て取得し、forEachでループしてclickします
document.querySelectorAll(".ocean-ntf-ntfitem-mark[title=既読にする]").forEach((element) => element.click());
}
isa
3
ありがとうございます!
提示いただいた記述を組み込んで下記コードで無事実装できました。
本音を言いますと、現在イベントを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);
});
})();
mura
4
ユーザーは kintone.getLoginUser()
で取得できますよ。リファレンス
code
にログイン名がはいるので、if文等で条件分岐するといいかとおもいます。
また、通知一覧画面を開いたとき、のイベントはありませんので、毎回URLを確認するしかないとおもいます。
const currentUrl = window.location.href;
if(currentUrl.includes('/k/#/ntf/mention')) {
...
}
1 Like
system
(system)
Closed
5
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。