From b1b1146d5a0fd08c905d1ab19efc42e52043a181 Mon Sep 17 00:00:00 2001 From: koda Date: Tue, 20 Oct 2015 06:12:54 +0900 Subject: [PATCH] =?UTF-8?q?#101=20=E3=83=87=E3=82=B9=E3=82=AF=E3=83=88?= =?UTF-8?q?=E3=83=83=E3=83=97=E9=80=9A=E7=9F=A5=E3=81=AF3=E7=A7=92?= =?UTF-8?q?=E3=81=A7=E6=B6=88=E3=81=88=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=80=81=E9=80=9A=E7=9F=A5=E3=82=92=E3=82=AF?= =?UTF-8?q?=E3=83=AA=E3=83=83=E3=82=AF=E3=81=99=E3=82=8B=E3=81=A8=E3=81=9D?= =?UTF-8?q?=E3=81=AE=E3=83=8A=E3=83=AC=E3=83=83=E3=82=B8=E3=82=92=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/knowledge/bat/NotifyMailBat.java | 31 +++--------------- .../project/knowledge/logic/NotifyLogic.java | 32 +++++++++++++++++++ .../views/commons/layout/commonScripts.jsp | 12 +++++-- 3 files changed, 45 insertions(+), 30 deletions(-) diff --git a/src/main/java/org/support/project/knowledge/bat/NotifyMailBat.java b/src/main/java/org/support/project/knowledge/bat/NotifyMailBat.java index 95f83fafe..01a44262f 100644 --- a/src/main/java/org/support/project/knowledge/bat/NotifyMailBat.java +++ b/src/main/java/org/support/project/knowledge/bat/NotifyMailBat.java @@ -17,7 +17,6 @@ import org.support.project.common.util.StringUtils; import org.support.project.knowledge.config.AppConfig; import org.support.project.knowledge.config.MailConfig; -import org.support.project.knowledge.config.SystemConfig; import org.support.project.knowledge.dao.CommentsDao; import org.support.project.knowledge.dao.ExUsersDao; import org.support.project.knowledge.dao.KnowledgesDao; @@ -31,16 +30,15 @@ import org.support.project.knowledge.entity.NotifyConfigsEntity; import org.support.project.knowledge.entity.NotifyQueuesEntity; import org.support.project.knowledge.logic.KnowledgeLogic; +import org.support.project.knowledge.logic.NotifyLogic; import org.support.project.knowledge.vo.GroupUser; import org.support.project.knowledge.vo.Notify; import org.support.project.web.dao.MailConfigsDao; import org.support.project.web.dao.MailsDao; -import org.support.project.web.dao.SystemConfigsDao; import org.support.project.web.dao.UsersDao; import org.support.project.web.entity.GroupsEntity; import org.support.project.web.entity.MailConfigsEntity; import org.support.project.web.entity.MailsEntity; -import org.support.project.web.entity.SystemConfigsEntity; import org.support.project.web.entity.UsersEntity; public class NotifyMailBat extends AbstractBat { @@ -87,27 +85,6 @@ private void start() { LOG.info("Notify process finished. count: " + notifyQueuesEntities.size()); } - /** - * 指定のナレッジにアクセスするURLを作成 - * @param knowledge - * @return - */ - private String makeURL(KnowledgesEntity knowledge) { - SystemConfigsDao dao = SystemConfigsDao.get(); - SystemConfigsEntity config = dao.selectOnKey(SystemConfig.SYSTEM_URL, AppConfig.get().getSystemName()); - if (config == null) { - return ""; - } - - StringBuilder builder = new StringBuilder(); - builder.append(config.getConfigValue()); - if (!config.getConfigValue().endsWith("/")) { - builder.append("/"); - } - builder.append("protect.knowledge/view/"); - builder.append(knowledge.getKnowledgeId()); - return builder.toString(); - } /** @@ -189,7 +166,7 @@ private void sendLikeMail(LikesEntity like, KnowledgesEntity knowledge, UsersEnt } else { contents = contents.replace("{LikeInsertUser}", ""); } - contents = contents.replace("{URL}", makeURL(knowledge)); + contents = contents.replace("{URL}", NotifyLogic.get().makeURL(knowledge.getKnowledgeId())); mailsEntity.setContent(contents); if (LOG.isDebugEnabled()) { @@ -327,7 +304,7 @@ private void sendCommentMail(CommentsEntity comment, KnowledgesEntity knowledge, contents = contents.replace("{CommentInsertUser}", ""); } contents = contents.replace("{CommentContents}", comment.getComment()); - contents = contents.replace("{URL}", makeURL(knowledge)); + contents = contents.replace("{URL}", NotifyLogic.get().makeURL(knowledge.getKnowledgeId())); mailsEntity.setContent(contents); if (LOG.isDebugEnabled()) { @@ -493,7 +470,7 @@ private void insertNotifyKnowledgeUpdateMailQue(KnowledgesEntity knowledge, User contents = contents.replace("{KnowledgeId}", knowledge.getKnowledgeId().toString()); contents = contents.replace("{KnowledgeTitle}", knowledge.getTitle()); contents = contents.replace("{Contents}", knowledge.getContent()); - contents = contents.replace("{URL}", makeURL(knowledge)); + contents = contents.replace("{URL}", NotifyLogic.get().makeURL(knowledge.getKnowledgeId())); mailsEntity.setContent(contents); diff --git a/src/main/java/org/support/project/knowledge/logic/NotifyLogic.java b/src/main/java/org/support/project/knowledge/logic/NotifyLogic.java index 4760e78c6..7b7bb1803 100644 --- a/src/main/java/org/support/project/knowledge/logic/NotifyLogic.java +++ b/src/main/java/org/support/project/knowledge/logic/NotifyLogic.java @@ -11,6 +11,8 @@ import org.support.project.di.Container; import org.support.project.di.DI; import org.support.project.di.Instance; +import org.support.project.knowledge.config.AppConfig; +import org.support.project.knowledge.config.SystemConfig; import org.support.project.knowledge.dao.KnowledgeGroupsDao; import org.support.project.knowledge.dao.KnowledgeUsersDao; import org.support.project.knowledge.dao.KnowledgesDao; @@ -27,7 +29,9 @@ import org.support.project.knowledge.websocket.NotifyAction; import org.support.project.web.bean.LoginedUser; import org.support.project.web.bean.MessageResult; +import org.support.project.web.dao.SystemConfigsDao; import org.support.project.web.entity.GroupsEntity; +import org.support.project.web.entity.SystemConfigsEntity; @DI(instance=Instance.Singleton) public class NotifyLogic { @@ -38,6 +42,29 @@ public static NotifyLogic get() { return Container.getComp(NotifyLogic.class); } + /** + * 指定のナレッジにアクセスするURLを作成 + * @param knowledge + * @return + */ + public String makeURL(Long knowledgeId) { + SystemConfigsDao dao = SystemConfigsDao.get(); + SystemConfigsEntity config = dao.selectOnKey(SystemConfig.SYSTEM_URL, AppConfig.get().getSystemName()); + if (config == null) { + return ""; + } + + StringBuilder builder = new StringBuilder(); + builder.append(config.getConfigValue()); + if (!config.getConfigValue().endsWith("/")) { + builder.append("/"); + } + builder.append("protect.knowledge/view/"); + builder.append(knowledgeId); + return builder.toString(); + } + + /** * 通知を処理 * @param notify @@ -129,6 +156,7 @@ public MessageResult getInsertKnowledgeMessage(LoginedUser loginuser, Locale loc if (isToKnowledgeSave(loginuser, knowledge)) { MessageResult messageResult = new MessageResult(); messageResult.setMessage(Resources.getInstance(locale).getResource("knowledge.notify.msg.desktop.to.insert", String.valueOf(knowledge.getKnowledgeId()))); + messageResult.setResult(makeURL(knowledge.getKnowledgeId()));// Knowledgeへのリンク return messageResult; } return null; @@ -145,6 +173,7 @@ public MessageResult getUpdateKnowledgeMessage(LoginedUser loginuser, Locale loc if (isToKnowledgeSave(loginuser, knowledge)) { MessageResult messageResult = new MessageResult(); messageResult.setMessage(Resources.getInstance(locale).getResource("knowledge.notify.msg.desktop.to.update", String.valueOf(knowledge.getKnowledgeId()))); + messageResult.setResult(makeURL(knowledge.getKnowledgeId()));// Knowledgeへのリンク return messageResult; } return null; @@ -253,6 +282,7 @@ public MessageResult getSaveCommentMessage(LoginedUser loginuser, Locale locale, // 自分で投稿したナレッジにコメントがついたので通知 MessageResult messageResult = new MessageResult(); messageResult.setMessage(Resources.getInstance(locale).getResource("knowledge.notify.msg.desktop.myitem.comment", String.valueOf(knowledge.getKnowledgeId()))); + messageResult.setResult(makeURL(knowledge.getKnowledgeId()));// Knowledgeへのリンク return messageResult; } @@ -260,6 +290,7 @@ public MessageResult getSaveCommentMessage(LoginedUser loginuser, Locale locale, // 自分宛てのナレッジにコメントがついたので通知 MessageResult messageResult = new MessageResult(); messageResult.setMessage(Resources.getInstance(locale).getResource("knowledge.notify.msg.desktop.to.comment", String.valueOf(knowledge.getKnowledgeId()))); + messageResult.setResult(makeURL(knowledge.getKnowledgeId()));// Knowledgeへのリンク return messageResult; } return null; @@ -285,6 +316,7 @@ public MessageResult getSaveLikeMessage(LoginedUser loginuser, Locale locale, Li // 自分で投稿したナレッジにイイネが押されたので通知 MessageResult messageResult = new MessageResult(); messageResult.setMessage(Resources.getInstance(locale).getResource("knowledge.notify.msg.desktop.myitem.like", String.valueOf(knowledge.getKnowledgeId()))); + messageResult.setResult(makeURL(knowledge.getKnowledgeId()));// Knowledgeへのリンク return messageResult; } diff --git a/src/main/webapp/WEB-INF/views/commons/layout/commonScripts.jsp b/src/main/webapp/WEB-INF/views/commons/layout/commonScripts.jsp index 680097dfc..82736bc2e 100644 --- a/src/main/webapp/WEB-INF/views/commons/layout/commonScripts.jsp +++ b/src/main/webapp/WEB-INF/views/commons/layout/commonScripts.jsp @@ -116,14 +116,20 @@ function onNotifyShow() { console.log('notification was shown!'); } -function notifyDesktop(msg) { +function notifyDesktop(msg, link) { $.notify(msg, 'info'); if (Notify.isSupported) { Notify.requestPermission( function() { var myNotification = new Notify('Notify from Knowledge', { body: msg, - notifyShow: onNotifyShow + notifyShow: onNotifyShow, + timeout: 3, + notifyClick: function() { + if (link) { + window.location.href=link; + } + } }); myNotification.show(); }, @@ -157,7 +163,7 @@ window.onload = function() { console.log('[RECEIVE] '); var result = JSON.parse(message.data); console.log(result); - notifyDesktop(result.message); + notifyDesktop(result.message, result.result); } webSocket.onerror = function(message) { }