322 lines
No EOL
11 KiB
JavaScript
322 lines
No EOL
11 KiB
JavaScript
$('.check_all').change(function() {
|
|
var checked = $(this);
|
|
$('.item_checkbox').prop("checked", checked.is(':checked'));
|
|
$('.item_checkbox').trigger('change');
|
|
// This is because we have two 'check-all' boxes, and we want them to be in sync
|
|
$('.check_all').prop("checked", checked.is(':checked'));
|
|
check_selected();
|
|
});
|
|
|
|
$('.action_button').click(function(e) {
|
|
var action = $(this).data('action');
|
|
var allow = false;
|
|
if(action == 'delete_all') {
|
|
allow = window.confirm("Delete all Inbox messages in the current folder except flagged?");
|
|
} else {
|
|
allow = true;
|
|
}
|
|
|
|
if (allow) {
|
|
mark_items(e, action);
|
|
this.blur();
|
|
} else {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
}
|
|
});
|
|
|
|
$("#inbox_messages").on("click", ".item_expand_action", function(e) {
|
|
var qid = $(this).data('qid');
|
|
var child = $(this).children();
|
|
var item = $("#inbox_item_" + qid);
|
|
|
|
if (item.hasClass('inbox_collapse')) {
|
|
item.removeClass('inbox_collapse');
|
|
item.addClass('inbox_expand');
|
|
child.attr({
|
|
'src': '/img/expand.gif',
|
|
'alt': 'Collapse',
|
|
'title': 'Collapse'
|
|
});
|
|
} else {
|
|
item.removeClass('inbox_expand');
|
|
item.addClass('inbox_collapse');
|
|
child.attr({
|
|
'src': '/img/collapse.gif',
|
|
'alt': 'Expand',
|
|
'title': 'Expand'
|
|
});
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
|
|
$("#inbox_messages").on("click", ".item_bookmark_action", function(e) {
|
|
var action = $(this).data('action');
|
|
var qid = $(this).data('qid');
|
|
mark_items(e, action, qid);
|
|
});
|
|
|
|
$("#inbox_messages").on("click", ".inbox_item_row", function(e) {
|
|
let checkbox = $(e.currentTarget).find('.item_checkbox');
|
|
|
|
// Don't fire if the item clicked on was the checkbox (otherwise the change will trigger twice)
|
|
// Don't fire on link clicks
|
|
if (!$(e.target).hasClass('item_checkbox') && e.target.tagName != "A") {
|
|
checkbox.prop("checked", !checkbox.is(':checked'));
|
|
checkbox.trigger('change');
|
|
}
|
|
});
|
|
|
|
|
|
$("#inbox_messages").on("change", ".item_checkbox", function(e) {
|
|
let checkbox = $(e.target);
|
|
let row = checkbox.parents('.inbox_item_row');
|
|
if (checkbox.prop('checked')) {
|
|
row.addClass('selected-msg');
|
|
} else {
|
|
row.removeClass('selected-msg');
|
|
}
|
|
check_selected();
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
|
|
|
|
|
|
function mark_items(e, action, qid, func) {
|
|
// Build array of checked items to send
|
|
if (qid == null) {
|
|
var item_qids = [];
|
|
$('.item_checkbox').each(function() {
|
|
var box = $(this);
|
|
if (box.is(':checked')) {
|
|
item_qids.push(box.val());
|
|
}
|
|
});
|
|
} else {
|
|
var item_qids = qid;
|
|
}
|
|
|
|
// When we redraw the inbox message list, we lose what was
|
|
// collapsed - so, note them now so we can reapply.
|
|
var collapsed = $( ".item_unread .inbox_collapse" ).map(function() {
|
|
return this.id;
|
|
}).get();
|
|
|
|
// Grab param data from the hidden fields
|
|
var auth_token = $("[name=lj_form_auth]").val();
|
|
var view = $("[name=view]").val();
|
|
var page = $("[name=page]").val();
|
|
var itemid = $("[name=itemid]").val();
|
|
|
|
var postData = {
|
|
'lj_form_auth': auth_token,
|
|
'ids': item_qids,
|
|
'action': action,
|
|
'view': view,
|
|
'page': page,
|
|
'itemid': itemid
|
|
}
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/__rpc_inbox_actions",
|
|
contentType: 'application/json',
|
|
data: JSON.stringify(postData),
|
|
success: function(data) {
|
|
if (data.success) {
|
|
console.log(action);
|
|
switch(action) {
|
|
case 'delete_all':
|
|
case 'delete':
|
|
$("#inbox_message_list").html(data.success.items);
|
|
$(".pagination").html(data.success.pages);
|
|
|
|
collapsed.forEach(function(id) {
|
|
var arrow = $("#" + id).siblings('.InboxItem_Controls').find('img.item_expand');
|
|
arrow.attr({
|
|
'src': '/img/collapse.gif',
|
|
'alt': 'Expand',
|
|
'title': 'Expand'
|
|
});
|
|
$("#" + id).addClass('inbox_collapse');
|
|
});
|
|
// We've reloaded the view, so set the select-all checkbox to unchecked.
|
|
$('.check_all').prop("checked", false);
|
|
break;
|
|
case 'mark_unread':
|
|
item_qids.forEach(function(qid) {
|
|
var item = $(`div[data-qid=${qid}]`);
|
|
item.addClass('inbox_expand').removeClass('inbox_collapse');
|
|
item.parents(".inbox_item_row").addClass('item_unread').removeClass('item_read');
|
|
$(`#Title_${qid}`).addClass('unread').removeClass('read');
|
|
|
|
});
|
|
break;
|
|
case 'mark_read':
|
|
item_qids.forEach(function(qid) {
|
|
var item = $(`div[data-qid=${qid}]`);
|
|
item.addClass('inbox_collapse').removeClass('inbox_expand');
|
|
item.parents(".inbox_item_row").addClass('item_read').removeClass('item_unread');
|
|
$(`#Title_${qid}`).addClass('read').removeClass('unread');
|
|
|
|
});
|
|
break;
|
|
case 'mark_all':
|
|
$('.InboxItem_Content').addClass('inbox_collapse').removeClass('inbox_expand');
|
|
$(".inbox_item_row").addClass('item_read').removeClass('item_unread');
|
|
$('.item span.unread').addClass('read').removeClass('unread');
|
|
break;
|
|
case 'bookmark_off':
|
|
var item = $(`.item_bookmark_action[data-qid=${qid}]`)
|
|
var child = item.children('.item_bookmark');
|
|
var url = item.attr('href');
|
|
item.data('action', 'bookmark_on');
|
|
item.attr('href', url.replace('bookmark_off', 'bookmark_on'));
|
|
child.attr({
|
|
'src': '/img/flag_on.gif',
|
|
'alt': 'Remove Bookmark',
|
|
'title': 'Remove Bookmark'
|
|
});
|
|
break;
|
|
case 'bookmark_on':
|
|
var item = $(`.item_bookmark_action[data-qid=${qid}]`)
|
|
var child = item.children('.item_bookmark');
|
|
var url = item.attr('href');
|
|
item.data('action', 'bookmark_off');
|
|
item.attr('href', url.replace('bookmark_on', 'bookmark_off'));
|
|
child.attr({
|
|
'src': '/img/flag_off.gif',
|
|
'alt': 'Bookmark This',
|
|
'title': 'Bookmark This'
|
|
});
|
|
break;
|
|
}
|
|
|
|
// Steps we do no matter what
|
|
|
|
// Navbar unread count
|
|
let unread = $("#Inbox_Unread_Count, #Inbox_Unread_Count_Menu");
|
|
if (!unread.length) return;
|
|
let unread_count = data.success.unread_count? ` (${data.success.unread_count})` : "";
|
|
unread[0].innerHTML = unread_count;
|
|
|
|
// Update folder info
|
|
$("#inbox_folders").html(data.success.folders);
|
|
|
|
// reset buttons
|
|
check_selected();
|
|
if (func) func();
|
|
|
|
} else {
|
|
data.errors.forEach( (error) =>
|
|
{
|
|
$(e.target).ajaxtip()
|
|
.ajaxtip("error", error);
|
|
});
|
|
|
|
}
|
|
},
|
|
dataType: "json"
|
|
});
|
|
if (e){
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
}
|
|
}
|
|
|
|
// Only load this on the compose page
|
|
if ($('#msg_to').length) {
|
|
let source = autocomplete_list ? autocomplete_list : [];
|
|
$('#msg_to').autocompletewithunknown({
|
|
populateSource: source,
|
|
});
|
|
}
|
|
$('.folders').removeClass('no-js');
|
|
$("#folder_btn").removeClass('no-js');
|
|
$("#inbox_folders").on("click", "#folder_btn", function(){
|
|
var folders = $('#folder_list');
|
|
var img = $(this).children();
|
|
|
|
if (folders.hasClass('folder_collapsed')) {
|
|
folders.removeClass('folder_collapsed');
|
|
folders.addClass('folder_expanded');
|
|
img.attr({
|
|
'src': '/img/expand.gif',
|
|
'alt': 'Collapse',
|
|
'title': 'Collapse'
|
|
});
|
|
|
|
} else {
|
|
folders.removeClass('folder_expanded');
|
|
folders.addClass('folder_collapsed');
|
|
img.attr({
|
|
'src': '/img/collapse.gif',
|
|
'alt': 'Expand',
|
|
'title': 'Expand'
|
|
});
|
|
}
|
|
});
|
|
|
|
// Nothing is selected, show 'Mark all read' and 'Delete all' buttons
|
|
function none_selected() {
|
|
$('.show_read').addClass('show-on-focus');
|
|
$('.show_unread').addClass('show-on-focus');
|
|
$('.show_all').removeClass('show-on-focus');
|
|
}
|
|
|
|
// Unread msgs selected - show 'Delete Selected' and 'Mark selected read' buttons
|
|
// Note: this shows even if read messages are also selected.
|
|
function unread_selected() {
|
|
$('.show_all').addClass('show-on-focus');
|
|
$('.show_read').addClass('show-on-focus');
|
|
$('.show_unread').removeClass('show-on-focus');
|
|
}
|
|
|
|
// Only read msgs selected - show 'Delete Selected' and 'Mark selected unread' buttons
|
|
function read_selected() {
|
|
$('.show_all').addClass('show-on-focus');
|
|
$('.show_unread').addClass('show-on-focus');
|
|
$('.show_read').removeClass('show-on-focus');
|
|
}
|
|
|
|
function check_selected() {
|
|
var read = false;
|
|
var unread = false;
|
|
$('.selected-msg').each(function () {
|
|
if ($(this).hasClass('item_read')) {
|
|
read = true;
|
|
} else {
|
|
unread = true;
|
|
}
|
|
});
|
|
|
|
if (unread) {
|
|
unread_selected();
|
|
} else if (read) {
|
|
read_selected();
|
|
} else{
|
|
none_selected();
|
|
}
|
|
}
|
|
|
|
none_selected();
|
|
$(".action_button").removeClass('no-js');
|
|
|
|
|
|
$("#inbox_messages").on("click", ".actions a", function(evt) {
|
|
if (evt && (evt.ctrlKey || evt.metaKey)) return true;
|
|
evt.preventDefault();
|
|
var qid = $(evt.target).parents(".InboxItem_Content").data('qid');
|
|
|
|
console.log($(evt.target).attr("href"));
|
|
|
|
mark_items(null, 'mark_read', [qid], function() { window.location.href = $(evt.target).attr("href"); });
|
|
});
|
|
|
|
// Handle reloads where we have already-checked elements as some browsers will re-check them
|
|
$(".item_checkbox:checked").each(function() {
|
|
$(this).parents('.inbox_item_row').addClass('selected-msg');
|
|
});
|
|
check_selected(); |