From fa6b253a07f54484ba94ac7169544e2ea777612f Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 25 Jul 2024 13:45:58 +0800 Subject: [PATCH] * [perf story #59903] Adjust getdropmenu js. --- module/message/config.php | 2 +- module/message/js/ajaxgetdropmenu.ui.js | 49 ++++++++++++---------- module/message/js/common.ui.js | 12 ++++++ module/message/lang/de.php | 6 +-- module/message/lang/en.php | 6 +-- module/message/lang/fr.php | 6 +-- module/message/lang/zh-cn.php | 6 +-- module/message/ui/ajaxgetdropmenu.html.php | 15 ++++--- 8 files changed, 58 insertions(+), 44 deletions(-) create mode 100644 module/message/js/common.ui.js diff --git a/module/message/config.php b/module/message/config.php index 83c8f3826f..abe29d34c1 100644 --- a/module/message/config.php +++ b/module/message/config.php @@ -49,6 +49,6 @@ $config->message->browser = new stdclass(); $config->message->browser->turnon = 1; $config->message->browser->pollTime = 300; $config->message->browser->minPollTime = 30; -$config->message->browser->show = 1; +$config->message->browser->show = 0; $config->message->browser->count = 1; $config->message->browser->maxDays = 30; diff --git a/module/message/js/ajaxgetdropmenu.ui.js b/module/message/js/ajaxgetdropmenu.ui.js index 6019a6a0ab..3c64f2e9b4 100644 --- a/module/message/js/ajaxgetdropmenu.ui.js +++ b/module/message/js/ajaxgetdropmenu.ui.js @@ -1,6 +1,6 @@ -window.markRead = function(e) +window.markRead = function(obj) { - let $this = $(e.target); + let $this = $(obj); if(!$this.hasClass('message-item')) $this = $this.closest('.message-item'); let isUnread = $this.hasClass('unread'); if(!isUnread) return; @@ -14,9 +14,9 @@ window.markRead = function(e) /* Rerender unread count. */ $('messageTabs #unread-messages.tab-pane').find('.message-item[data-id="' + messageID + '"]').addClass('hidden'); renderMessage(); -} +}; -window.markAllRead = function(e) +window.markAllRead = function() { let $messageItem = $('#messageTabs .message-item.unread'); $messageItem.find('.label-dot.danger').removeClass('danger').addClass('gray'); @@ -24,25 +24,19 @@ window.markAllRead = function(e) $('#messageTabs #unread-messages.tab-pane .message-item').addClass('hidden'); $.get($.createLink('message', 'ajaxMarkRead', "id=all")); renderMessage(); -} +}; -window.clearRead = function(e) +window.clearRead = function() { - let result = confirm(confirmClearLang); - if(!result) return; - let $messageItem = $('#messageTabs .message-item:not(.unread)'); $messageItem.addClass('hidden'); $.get($.createLink('message', 'ajaxDelete', "id=allread")); renderMessage(); -} +}; -window.deleteMessage = function(e) +window.deleteMessage = function(obj) { - let result = confirm(confirmDeleteLang); - if(!result) return; - - let $this = $(e.target); + let $this = $(obj); if(!$this.hasClass('message-item')) $this = $this.closest('.message-item'); let messageID = $this.data("id"); @@ -52,18 +46,25 @@ window.deleteMessage = function(e) /* Rerender unread count. */ renderMessage(); -} +}; + +window.clickMessage = function(obj) +{ + let $obj = $(obj); + let url = $obj.attr('data-url').replace(/\?onlybody=yes/g, '').replace(/\&onlybody=yes/g, ''); + markRead(obj); + $('#header #messageBar').trigger('click'); + $.apps.openApp(url); + rederMessage(); +}; window.renderMessage = function() { - let $unreadTab = $('#messageTabs #unread-messages.tab-pane'); + let $unreadTab = $('#messageTabs #unread-messages.tab-pane'); let unreadCount = $unreadTab.find('.message-item.unread').length; - let $messageBarDot = $('#messageBar .label-dot.danger'); - $('[href="#unread-messages"] span').html(unreadLangTempate.replace(/%s/, unreadCount)); - if($messageBarDot.html()) $messageBarDot.html(unreadCount); + if(typeof(unreadLangTempate) != 'undefined') $('[href="#unread-messages"] span').html(unreadLangTempate.replace(/%s/, unreadCount)); if(unreadCount == 0) { - $messageBarDot.remove(); $unreadTab.find('ul').addClass('hidden'); if($unreadTab.find('.nodata').length == 0) $unreadTab.append("
" + noDataLang + "
"); } @@ -75,4 +76,8 @@ window.renderMessage = function() $allTab.find('ul').addClass('hidden'); if($allTab.find('.nodata').length == 0) $allTab.append("
" + noDataLang + "
"); } -} + + updateAllDot(showCount); +}; + +$(function(){ updateAllDot(showCount); }); diff --git a/module/message/js/common.ui.js b/module/message/js/common.ui.js new file mode 100644 index 0000000000..bb6ed211e5 --- /dev/null +++ b/module/message/js/common.ui.js @@ -0,0 +1,12 @@ +window.updateAllDot = function(showCount) +{ + let $unreadTab = $('#messageTabs #unread-messages.tab-pane'); + let unreadCount = $unreadTab.find('.message-item.unread').length; + let dotHtml = '' + (showCount != '0' ? unreadCount : '') + ''; + parent.$('#apps .app-container').each(function() + { + let $iframeMessageBar = $(this).find('iframe').contents().find('#messageBar'); + $iframeMessageBar.find('.label-dot.danger').remove(); + if(unreadCount) $iframeMessageBar.append(dotHtml); + }); +}; diff --git a/module/message/lang/de.php b/module/message/lang/de.php index 7941e4970a..97d896a89e 100644 --- a/module/message/lang/de.php +++ b/module/message/lang/de.php @@ -31,10 +31,8 @@ $lang->message->timeLabel['minute'] = '%s minute ago'; $lang->message->timeLabel['hour'] = '1 hour ago'; $lang->message->notice = new stdclass(); -$lang->message->notice->confirmDelete = "Are you sure you want to delete this message?"; -$lang->message->notice->confirmClear = "Are you sure you want to clear the read messages?"; -$lang->message->notice->allMarkRead = 'One-click read'; -$lang->message->notice->clearRead = 'Clear read'; +$lang->message->notice->allMarkRead = 'One-click read'; +$lang->message->notice->clearRead = 'Clear read'; $lang->message->label = new stdclass(); $lang->message->label->created = 'create'; diff --git a/module/message/lang/en.php b/module/message/lang/en.php index b299a38202..805bd6a8c7 100644 --- a/module/message/lang/en.php +++ b/module/message/lang/en.php @@ -31,10 +31,8 @@ $lang->message->timeLabel['minute'] = '%s minute ago'; $lang->message->timeLabel['hour'] = '1 hour ago'; $lang->message->notice = new stdclass(); -$lang->message->notice->confirmDelete = "Are you sure you want to delete this message?"; -$lang->message->notice->confirmClear = "Are you sure you want to clear the read messages?"; -$lang->message->notice->allMarkRead = 'One-click read'; -$lang->message->notice->clearRead = 'Clear read'; +$lang->message->notice->allMarkRead = 'One-click read'; +$lang->message->notice->clearRead = 'Clear read'; $lang->message->label = new stdclass(); $lang->message->label->created = 'create'; diff --git a/module/message/lang/fr.php b/module/message/lang/fr.php index eb329576b6..e707b99368 100644 --- a/module/message/lang/fr.php +++ b/module/message/lang/fr.php @@ -31,10 +31,8 @@ $lang->message->timeLabel['minute'] = '%s minute ago'; $lang->message->timeLabel['hour'] = '1 hour ago'; $lang->message->notice = new stdclass(); -$lang->message->notice->confirmDelete = "Are you sure you want to delete this message?"; -$lang->message->notice->confirmClear = "Are you sure you want to clear the read messages?"; -$lang->message->notice->allMarkRead = 'One-click read'; -$lang->message->notice->clearRead = 'Clear read'; +$lang->message->notice->allMarkRead = 'One-click read'; +$lang->message->notice->clearRead = 'Clear read'; $lang->message->label = new stdclass(); $lang->message->label->created = 'create'; diff --git a/module/message/lang/zh-cn.php b/module/message/lang/zh-cn.php index 516f64f2c5..9aa5da073f 100644 --- a/module/message/lang/zh-cn.php +++ b/module/message/lang/zh-cn.php @@ -31,10 +31,8 @@ $lang->message->timeLabel['minute'] = '%s分钟前'; $lang->message->timeLabel['hour'] = '1小时前'; $lang->message->notice = new stdclass(); -$lang->message->notice->confirmDelete = "您确定要删除该条消息吗?"; -$lang->message->notice->confirmClear = "您确定要清空已读消息吗?"; -$lang->message->notice->allMarkRead = '一键已读'; -$lang->message->notice->clearRead = '清空已读'; +$lang->message->notice->allMarkRead = '一键已读'; +$lang->message->notice->clearRead = '清空已读'; $lang->message->label = new stdclass(); $lang->message->label->created = '创建'; diff --git a/module/message/ui/ajaxgetdropmenu.html.php b/module/message/ui/ajaxgetdropmenu.html.php index 22f8ff6399..dcdd54ebac 100644 --- a/module/message/ui/ajaxgetdropmenu.html.php +++ b/module/message/ui/ajaxgetdropmenu.html.php @@ -14,8 +14,7 @@ namespace zin; jsVar('unreadLangTempate', $lang->message->unread); jsVar('noDataLang', $lang->noData); -jsVar('confirmDeleteLang', $lang->message->notice->confirmDelete); -jsVar('confirmClearLang', $lang->message->notice->confirmClear); +jsVar('showCount', $config->message->browser->count); $buildMessageList = function($messageGroup) use ($lang) { @@ -36,6 +35,12 @@ $buildMessageList = function($messageGroup) use ($lang) if($secondDiff >= 3600) $time = $lang->message->timeLabel['hour']; if($secondDiff > 5400) $time = substr($message->createdDate, 5, 11); + preg_match_all("/data, $out); + $link = count($out[1]) ? $out[1][0] : ''; + $content = str_replace("data); + $content = preg_replace("/data-app='([^\']+)'/", '', $content); + $content = preg_replace("/(\?|\&)onlybody=yes'/", '', $content); + $itemList[] = h::li ( setClass('message-item border rounded-lg p-2 mt-2' . ($isUnread ? ' unread' : '')), @@ -46,7 +51,7 @@ $buildMessageList = function($messageGroup) use ($lang) cell(label(setClass("label-dot {$dotColor} mr-2")), $lang->message->browser), cell($time, icon(setClass('ml-2 cursor-pointer delete-message-btn'), 'close')) ), - div(setClass('pt-1'), html($message->data)) + div(setClass('pt-1'), html($content)) ); } $dateList[] = h::li(h::ul(setClass('list-unstyled'), $itemList)); @@ -59,8 +64,8 @@ tabs setID('messageTabs'), setClass('text-black pt-1 px-5 pb-5 relative'), set::style(array('width' => '400px', 'background-color' => '#fff')), - on::click('.delete-message-btn', 'deleteMessage'), - on::click('.message-item', 'markRead'), + on::click('.delete-message-btn', 'deleteMessage(e.target)'), + on::click('.message-item', 'markRead(e.target)'), on::click('.clearRead', 'clearRead'), on::click('.allMarkRead', 'markAllRead'), div