173 lines
5.7 KiB
JavaScript
173 lines
5.7 KiB
JavaScript
window.markRead = function(obj)
|
|
{
|
|
let $this = $(obj);
|
|
if(!$this.hasClass('message-item')) $this = $this.closest('.message-item');
|
|
let isUnread = $this.hasClass('unread');
|
|
if(!isUnread) return;
|
|
|
|
let messageID = $this.data("msgid");
|
|
let $messageItem = $('#messageTabs .message-item.unread[data-msgid="' + messageID + '"]');
|
|
$messageItem.find('.label-dot.danger').removeClass('danger').addClass('gray');
|
|
$messageItem.removeClass('unread');
|
|
$messageItem.attr('data-target', '#readContextMenu');
|
|
$.get($.createLink('message', 'ajaxMarkRead', "id=" + messageID));
|
|
|
|
/* Rerender unread count. */
|
|
$('#messageTabs #unread-messages.tab-pane').find('.message-item[data-msgid="' + messageID + '"]').addClass('hidden');
|
|
renderMessage();
|
|
};
|
|
|
|
window.markUnread = function(obj)
|
|
{
|
|
let $this = $(obj);
|
|
if(!$this.hasClass('message-item')) $this = $this.closest('.message-item');
|
|
let isUnread = $this.hasClass('unread');
|
|
if(isUnread) return;
|
|
|
|
let messageID = $this.data("msgid");
|
|
let $messageItem = $('#messageTabs .message-item[data-msgid="' + messageID + '"]');
|
|
$messageItem.find('.label-dot.gray').removeClass('gray').addClass('danger');
|
|
$messageItem.addClass('unread');
|
|
$.get($.createLink('message', 'ajaxMarkUnread', "id=" + messageID));
|
|
|
|
/* Rerender unread count. */
|
|
fetchMessage(true, $.createLink('message', 'ajaxGetDropmenu', 'active=all'));
|
|
renderMessage();
|
|
};
|
|
|
|
window.markAllRead = function()
|
|
{
|
|
let $messageItem = $('#messageTabs .message-item.unread');
|
|
$messageItem.find('.label-dot.danger').removeClass('danger').addClass('gray');
|
|
$messageItem.removeClass('unread');
|
|
$('#messageTabs #unread-messages.tab-pane .message-item').addClass('hidden');
|
|
$.get($.createLink('message', 'ajaxMarkRead', "id=all"));
|
|
renderMessage();
|
|
};
|
|
|
|
window.clearRead = function()
|
|
{
|
|
let $messageItem = $('#messageTabs .message-item:not(.unread)');
|
|
$messageItem.addClass('hidden');
|
|
$.get($.createLink('message', 'ajaxDelete', "id=allread"));
|
|
renderMessage();
|
|
};
|
|
|
|
window.deleteMessage = function(obj)
|
|
{
|
|
let $this = $(obj);
|
|
if(!$this.hasClass('message-item')) $this = $this.closest('.message-item');
|
|
|
|
let messageID = $this.data("msgid");
|
|
let $messageItem = $('#messageTabs .message-item[data-msgid="' + messageID + '"]');
|
|
$messageItem.removeClass('unread');
|
|
$messageItem.addClass('hidden');
|
|
$.get($.createLink('message', 'ajaxDelete', "id=" + messageID));
|
|
|
|
/* Rerender unread count. */
|
|
renderMessage();
|
|
};
|
|
|
|
window.clickMessage = function(obj, event)
|
|
{
|
|
// Prevent default link behavior to avoid double navigation
|
|
if(event)
|
|
{
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
}
|
|
|
|
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);
|
|
renderMessage();
|
|
};
|
|
|
|
window.renderMessage = function()
|
|
{
|
|
let $unreadTab = $('#messageTabs #unread-messages.tab-pane');
|
|
let unreadCount = $unreadTab.find('.message-item.unread').length;
|
|
if(typeof(unreadLangTempate) != 'undefined') $('[href="#unread-messages"] span').html(unreadLangTempate.replace(/%s/, unreadCount));
|
|
if(unreadCount == 0)
|
|
{
|
|
$unreadTab.find('ul').addClass('hidden');
|
|
if($unreadTab.find('.nodata').length == 0) $unreadTab.append(noDataHtml);
|
|
}
|
|
|
|
let $allTab = $('#messageTabs #all-messages.tab-pane');
|
|
let allCount = $allTab.find('.message-item:not(.hidden)').length;
|
|
if(allCount == 0)
|
|
{
|
|
$allTab.find('ul').addClass('hidden');
|
|
if($allTab.find('.nodata').length == 0) $allTab.append(noDataHtml);
|
|
}
|
|
|
|
$('#messageTabs .message-date').each(function()
|
|
{
|
|
if($(this).find('.message-item:not(.hidden)').length == 0) $(this).addClass('hidden');
|
|
});
|
|
|
|
updateAllDot(showCount);
|
|
};
|
|
|
|
window.hideContextMenu = function()
|
|
{
|
|
if(thisContextmenu != null) thisContextmenu.hide();
|
|
thisContextmenu = null;
|
|
contextmenuEle = null;
|
|
};
|
|
|
|
window.clickContextMenu = function(item)
|
|
{
|
|
let action = item.value;
|
|
let $this = contextmenuEle;
|
|
if(action == 'delete') deleteMessage($this);
|
|
if(action == 'markunread') markUnread($this);
|
|
};
|
|
|
|
let thisContextmenu = null;
|
|
let contextmenuEle = null;
|
|
$(function()
|
|
{
|
|
updateAllDot(showCount);
|
|
|
|
/* Bind contextmenu for message dropdown. */
|
|
$(document).on('contextmenu', '*', function(event)
|
|
{
|
|
hideContextMenu();
|
|
let $this = $(this);
|
|
if($this.hasClass('message-item') || $this.closest('.message-item').length)
|
|
{
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
|
|
if(!$this.hasClass('message-item')) $this = $this.closest('.message-item');
|
|
thisContextmenu = zui.ContextMenu.show(
|
|
{
|
|
triggerEvent: event,
|
|
items: $this.hasClass('unread') ? unreadContextMenu : readContextMenu,
|
|
menu: { onClickItem: (info) => { clickContextMenu(info.item); }}
|
|
});
|
|
contextmenuEle = $this;
|
|
return;
|
|
}
|
|
});
|
|
|
|
/* Hidden dropdown and contextmenu. */
|
|
$('#dropdownMessageMenu').on('click', function(event)
|
|
{
|
|
hideContextMenu();
|
|
if($(event.target).closest('.messageSettingBox').length == 0 && $('#messageSettingDropdown-toggle').hasClass('open')) closeSettingDropdown();
|
|
});
|
|
$('#dropdownMessageMenu').on('scroll', function(event){hideContextMenu();});
|
|
|
|
/* Adjust dropdown height when resize. */
|
|
$(window).on('resize', function(event)
|
|
{
|
|
let maxHeight = $(window).height() - $('#header').height() - 5;
|
|
$("#dropdownMessageMenu").css('height', maxHeight).css('max-height', maxHeight)
|
|
});
|
|
});
|