Mercurial > public > sg101
diff messages/static/js/tabbed_messages.js @ 581:ee87ea74d46b
For Django 1.4, rearranged project structure for new manage.py.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 05 May 2012 17:10:48 -0500 |
parents | gpp/messages/static/js/tabbed_messages.js@9f888dbe61ce |
children | ad69236e8501 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messages/static/js/tabbed_messages.js Sat May 05 17:10:48 2012 -0500 @@ -0,0 +1,199 @@ +$(document).ready(function() { + $tabs = $('#tabs').tabs({ + selected: initialTab, + select: function(event, ui) { + $(ui.panel).html(''); + }, + load: function(event, ui) { + selectedTab = ui; + if (ui.index == 1 && receiver && !doReply) + { + $('#id_receiver').val(receiver); + receiver = ''; + } + else if (doReply && ui.index == 1) + { + doReply = false; + var msg = msgCache[$msgDialog.msgId]; + $('#id_receiver').val(msg.sender); + $('#id_subject').val(msg.re_subject); + $('#id_message').val(msg.re_content); + $('#msg_compose_form').append('<input type="hidden" name="reply_to" value="' + + $msgDialog.msgId + '" />'); + } + }, + ajaxOptions: { + error: function(xhr, status, index, anchor) { + $(anchor.hash).html( + "Oops, we couldn't load this tab. We'll try to fix this as soon as possible."); + } + } + }); + $msgDialog = $('#msgDialog').dialog({ + autoOpen: false, + width: 460, + height: 'auto', + maxHeight: false, + resizable: false, + buttons: [ + { + text: "Reply", + click: function() { + doReply = true; + $(this).dialog('close'); + $tabs.tabs("select", 1); + } + }, + { + text: "Close", + click: function() { + $(this).dialog('close'); + } + } + ] + }); +}); + +var $tabs = 0; +var $msgDialog = 0; +var msgCache = {}; +var doReply = false; +var selectedTab = 0; + +function updateUnreadMsgText(n) +{ + var txt = ''; + if (n == 1) { + txt = "1 New Message"; + } + else if (n > 1) { + txt = n + " New Messages"; + } + else { + txt = "Private Messages"; + } + $('#unread_msg_text').html(txt); +} + +function showMsg(link, id) { + $msgDialog.msgId = id; // create a msgId attribute on the dialog + var msg = msgCache[id]; + + // mark as read if necessary + var $link = $(link); + + if (username == msg.receiver && $link.hasClass('unread')) { + $(link).removeClass('unread'); + + // decrement count of unread messages in base template + if (unreadMsgCount > 0) + { + updateUnreadMsgText(--unreadMsgCount); + } + } + + var s = '<div style="max-height:450px;overflow:auto">' + msg.content + '</div>'; + $msgDialog.html(s); + var title = 'PM From ' + msg.sender + ' To ' + msg.receiver + '<br /> ' + msg.subject; + $msgDialog.dialog('option', 'title', title); + $msgDialog.dialog('open'); +} + +function msgShow(link, id) { + if (msgCache[id]) { + showMsg(link, id); + return; + } + $.ajax({ + url: '/messages/message/', + type: 'POST', + data: { + msg_id : id + }, + dataType: 'json', + success: function (data, textStatus) { + msgCache[id] = data; + showMsg(link, id); + }, + error: function (xhr, textStatus, ex) { + alert('Oops, an error occurred. ' + xhr.statusText + ' - ' + + xhr.responseText); + } + }); +} + +function submitOptions(form) { + $.ajax({ + url: '/messages/options-tab/', + type: 'POST', + data: $(form).serialize(), + dataType: 'html', + success: function (data, textStatus) { + $(selectedTab.panel).html(data); + }, + error: function (xhr, textStatus, ex) { + alert('Oops, an error occurred. ' + xhr.statusText + ' - ' + + xhr.responseText); + } + }); + return false; +} + +function messageSubmit(form) { + $.ajax({ + url: '/messages/compose-tab/', + type: 'POST', + data: $(form).serialize(), + dataType: 'html', + success: function (data, textStatus) { + $(selectedTab.panel).html(data); + }, + error: function (xhr, textStatus, ex) { + alert('Oops, an error occurred. ' + xhr.statusText + ' - ' + + xhr.responseText); + } + }); + return false; +} + +function tabMasterCheckClick(box, name) { + var state = $(box).attr('checked'); + $('input[name="' + name + '"]').each(function() { + this.checked = state; + }); +} + +function bulkMsgAction(form, action) { + if (confirm("Really " + action + " checked messages?")) { + $.ajax({ + url: '/messages/bulk/', + type: 'POST', + data: $(form).serialize(), + dataType: 'text', + success: function (data, textStatus) { + $tabs.tabs("load", selectedTab.index); + }, + error: function (xhr, textStatus, ex) { + alert('Oops, an error occurred. ' + xhr.statusText + ' - ' + + xhr.responseText); + } + }); + } + return false; +} + +function ajaxPageFetch(link) { + $.ajax({ + url: link.href, + type: 'GET', + dataType: 'html', + success: function (data, textStatus) { + $(selectedTab.panel).html(data); + }, + error: function (xhr, textStatus, ex) { + alert('Oops, an error occurred. ' + xhr.statusText + ' - ' + + xhr.responseText); + } + }); + return false; +}