実現したいこと:既読チェックのJavaをモバイルアプリ上にも適用させたい
知識のない素人質問で申し訳ございませんがご教示ください。
kintoneの掲示板アプリにこちらのURLを参照して既読チェックボタンを作成しました。
お知らせアプリでレコードの既読チェックカスタマイズをしてみよう - cybozu developer network
iPhoneからモバイル用アプリでkintoneにアクセスしたときにも同様に動作させたく、
以下のようにコードを書き換えたのですが、ボタンが表示されません。
どの部分を修正すればよいでしょうか?
似た質問が過去にもあったようなのですが、参考URLが全部アクセスできなかった為、
すみませんが再質問させていただきます。
なお、jsファイルは スマートフォン用のJavaScript / CSSファイルアップロード部分にアップロードしており、適用範囲はアプリ管理者(当方)にしてあります。
(() => {
‘use strict’;
const common = {
statusCode: ‘ステータス’,
button: ‘Button’,
notedUsers: ‘Noted_Users’,
count: ‘Count’
};
const terms = {
en: {
icon: ‘Noted’,
message: ‘If you check this announcement, please click below Noted button.’,
publishedStatusName: ‘Published’,
revsionError: ‘Someone may update a record. Please try again.’
},
ja: {
icon: ‘確認’,
message: ‘このお知らせを確認された方は、下の「確認」ボタンをクリックしてください’,
publishedStatusName: ‘公開済み’,
revsionError: ‘レコードが更新されました。再度「確認」ボタンをクリックしてください。’
}
};
const lang = kintone.getLoginUser().language;
const switchLang = (terms[lang]) ? terms[lang] : terms.en;
const isPublished = (event) => {
const status = event.record[common.statusCode].value;
return status === switchLang.publishedStatusName;
};
const hasClicked = (event) => {
const notedUsers = event.record[common.notedUsers].value;
const user = kintone.getLoginUser().code;
return notedUsers.some(notedUser => notedUser.code === user);
};
const updateRecord = () => {
const user = kintone.getLoginUser().code;
const getBody = {
app: kintone.app.getId(),
id: kintone.app.record.getId()
};
return kintone.api(kintone.api.url('/k/v1/record', true), 'GET', getBody).then((resp) => {
const record = resp.record;
const revision = record.$revision.value;
const notedUsers = record[common.notedUsers].value;
notedUsers.push({code: user});
const counts = notedUsers.length;
const putBody = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
[common.notedUsers]: {
value: notedUsers
},
[common.count]: {
value: counts
}
},
revision: revision
};
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', putBody).then(() => {
location.reload();
}).catch((error) => {
alert(switchLang.revsionError);
location.reload();
});
});
};
const appendButton = (event) => {
if (!isPublished(event) || hasClicked(event)) {
return;
}
const messageSpan = document.createElement('span');
messageSpan.textContent = switchLang.message;
const messageDiv = document.createElement('div');
messageDiv.style.color = 'red';
messageDiv.appendChild(messageSpan);
const button = document.createElement('button');
button.className = 'kintoneplugin-button-dialog-ok';
button.title = 'noted_button';
button.innerHTML = switchLang.icon + '<i class="fa fa-check-square-o" aria-hidden="true"></i>';
button.addEventListener('click', updateRecord);
const space = kintone.app.record.getSpaceElement(common.button);
space.appendChild(messageDiv);
space.appendChild(button);
};
const editDisabled = (event) => {
if (event.reuse) {
event.record[common.notedUsers].value = ;
event.record[common.count].value = ‘’;
}
event.record[common.notedUsers].disabled = true;
event.record[common.count].disabled = true;
return event;
};
const detailShowEvent = ‘mobile.app.record.detail.show’;
kintone.events.on(detailShowEvent, (event) => {
appendButton(event);
return event;
});
const editShowEvents = [
‘mobile.app.record.edit.show’,
‘mobile.app.record.create.show’,
‘mobile.app.record.index.edit.show’
];
kintone.events.on(editShowEvents, (event) => {
editDisabled(event);
return event;
});
})();