diff options
Diffstat (limited to 'src/js/mail.js')
-rw-r--r-- | src/js/mail.js | 215 |
1 files changed, 184 insertions, 31 deletions
diff --git a/src/js/mail.js b/src/js/mail.js index 867b60b..96fed56 100644 --- a/src/js/mail.js +++ b/src/js/mail.js @@ -2,46 +2,104 @@ var mail = new function(){ var that = this; var j_index_page; var j_maillist; + var j_newmail; + var j_readmail; + var j_tabnav_inbox; + var j_tabnav_backup; - var mailitem_set = function(j_item,from,title,time,unread){ - j_item.find('td.from').text(from); + var readmail_mailid = null; + var maillist_type = null; + var maillist_off = null; + + function mailitem_set(j_item,mailid,from_username,title,time,unread){ + j_item.find('td.from_username').text(from_username); j_item.find('td.title').text(title); j_item.find('td.time').text(time); if(unread == true){ j_item.addClass('warning'); + }else{ + j_item.removeClass('warning'); } + + j_item.off('click').on('click',function(e){ + readmail_mailid = mailid; + j_readmail.modal('show'); + return false; + }); }; - var mailitem_create = function(from,title,time,unread){ - var j_item = $('<tr class="item"><td class="from"></td><td class="title"></td><td class="time"></td></tr>'); + function mailitem_create(mailid,from_username,title,time,unread){ + var j_item = $('<tr class="item"><td class="from_username"></td><td class="title"></td><td class="time"></td></tr>'); - mailitem_set(j_item,from,title,time,unread); + mailitem_set(j_item,mailid,from_username,title,time,unread); return j_item; }; + function update_maillist(){ + com.call_backend('core/mail/','list_mail',function(result){ + var data; + var mail; + var items; + var j_item; + var i; + + if(com.is_callerr(result)){ + //TODO GE + }else{ + data = result.data; + + items = j_maillist.find('tr.item'); + for(i = 0;i < Math.min(items.length,data.length);i++){ + mail = data[i]; + + mailitem_set($(items[i]),mail.mailid,mail.from_username,mail.title,com.get_timestring(mail.send_time),mail.unread); + } + for(;i < data.length;i++){ + mail = data[i]; + + j_item = mailitem_create(mail.mailid,mail.from_username,mail.title,com.get_timestring(mail.send_time),mail.unread); + j_maillist.append(j_item); + } + for(;i < items.length;i++){ + $(items[i]).remove(); + } + } + },maillist_type,maillist_off,maillist_off + 20); + }; that.ready = function(){ var mail_node = new vus.node('mail'); + var inbox_node = new vus.node('inbox'); + var backup_node = new vus.node('backup'); j_index_page = $('#index_page'); - + mail_node.url_chg = function(direct,url_upart,url_dpart,param){ if(direct == 'in'){ - com.loadpage('信箱','/toj/html/mail.html').done(function(){ - var j_oper; - var j_newmail; + index.set_menu('信箱'); + index.set_title(''); + + index.clear_tabnav(); + + mail_node.child_delayset('inbox'); + mail_node.child_delayset('backup'); + + com.loadpage('/toj/html/mail.html').done(function(){ var newmail_content; + var readmail_content; j_maillist = j_index_page.find('table.maillist > tbody'); + j_newmail = j_index_page.find('div.newmail'); + j_readmail = j_index_page.find('div.readmail'); + newmail_content = com.create_codebox(j_newmail.find('div.content'),'text/html'); + readmail_content = com.create_codebox(j_readmail.find('div.content'),'text/html',true); - j_oper = j_index_page.find('div.oper'); - j_oper.find('li.newmail > a').on('click',function(e){ + index.add_tabnav('寫新郵件','').on('click',function(e){ j_newmail.modal('show'); return false; }); - - j_newmail = j_index_page.find('div.newmail'); - newmail_content = com.create_codebox(j_newmail.find('div.content'),'text/html'); + j_tabnav_inbox = index.add_tabnav('收件匣','/toj/mail/inbox/'); + j_tabnav_backup = index.add_tabnav('寄件備份','/toj/mail/backup/'); j_newmail.on('shown',function(e){ newmail_content.refresh(); @@ -49,6 +107,8 @@ var mail = new function(){ j_newmail.on('hide',function(e){ j_newmail.find('input').val(''); newmail_content.setValue(''); + + update_maillist(); }); j_newmail.find('button.submit').on('click',function(e){ var to_username = j_newmail.find('input.to_username').val(); @@ -59,8 +119,6 @@ var mail = new function(){ var data = result.data; var errmsg; - j_newmail.modal('hide'); - if(com.is_callerr(result)){ if(data == 'Etitle_too_short'){ errmsg = '郵件標題過短'; @@ -79,6 +137,7 @@ var mail = new function(){ index.add_alert('alert-error','失敗',errmsg,true); }else{ index.add_alert('alert-success','成功','信件已寄出',true); + j_newmail.modal('hide'); } },to_username,title,content); }); @@ -86,27 +145,121 @@ var mail = new function(){ j_newmail.modal('hide'); }); - com.call_backend('core/mail/','get_mail_count',function(result){ - if(com.is_callerr(result)){ - //TODO GE - }else{ - - } + j_readmail.on('show',function(e){ + com.call_backend('core/mail/','recv_mail',function(result){ + var data; + + if(com.is_callerr(result)){ + //TODO GE + }else{ + data = result.data; + + j_readmail.find('h3.title').text(data.title); + j_readmail.find('span.from_username').text(data.from_username); + readmail_content.setValue(data.content); + } + },readmail_mailid); }); - com.call_backend('core/mail/','list_mail',function(result){ - console.log(result); - },1); + j_readmail.on('shown',function(e){ + readmail_content.refresh(); + }); + j_readmail.on('hide',function(e){ + j_readmail.find('h3.title').text(''); + j_readmail.find('span.from_username').text(''); + readmail_content.setValue(''); + + update_maillist(); + }); + j_readmail.find('button.reply').on('click',function(e){ + j_newmail.find('input.to_username').val(j_readmail.find('span.from_username').text()); + j_newmail.find('input.title').val('Re: ' + j_readmail.find('h3.title').text()); - var j_item; - var i; + j_readmail.modal('hide'); + j_newmail.modal('show'); + }); - for(i = 0;i < 20;i++){ - j_item = mailitem_create('alice','範例右鍵標題','2013-6-17 10:24'); - j_maillist.append(j_item); - } + mail_node.child_set(inbox_node); + mail_node.child_set(backup_node); }); + + if(url_dpart.length == 0){ + com.url_update('/toj/mail/inbox/'); + } + }else if(direct == 'out'){ + mail_node.child_del(inbox_node); + mail_node.child_del(backup_node); } + + return 'cont'; }; com.vus_root.child_set(mail_node); + + inbox_node.url_chg = function(direct,url_upart,url_dpart,param){ + if(direct == 'in' || direct == 'same'){ + maillist_type = 1; + if(param == null){ + maillist_off = 0; + }else{ + maillist_off = parseInt(param); + } + + j_tabnav_inbox.active(); + + com.call_backend('core/mail/','get_mail_count',function(result){ + var i; + var j_div = j_index_page.find('div.pagination'); + var offs; + var as; + + if(com.is_callerr(result)){ + //TODO GE + }else{ + offs = com.create_pagination(j_div,0,result.data.tot_count,maillist_off,20); + as = j_div.find('a'); + for(i = 0;i < as.length;i++){ + $(as[i]).attr('href','/toj/mail/inbox:' + offs[i] + '/'); + } + } + },maillist_type); + + update_maillist(); + } + + return 'cont'; + }; + + backup_node.url_chg = function(direct,url_upart,url_dpart,param){ + if(direct == 'in' || direct == 'same'){ + maillist_type = 2; + if(param == null){ + maillist_off = 0; + }else{ + maillist_off = parseInt(param); + } + + j_tabnav_backup.active(); + + com.call_backend('core/mail/','get_mail_count',function(result){ + var i; + var j_div = j_index_page.find('div.pagination'); + var offs; + var as; + + if(com.is_callerr(result)){ + //TODO GE + }else{ + offs = com.create_pagination(j_div,0,result.data.tot_count,maillist_off,2); + as = j_div.find('a'); + for(i = 0;i < as.length;i++){ + $(as[i]).attr('href','/toj/mail/backup:' + offs[i] + '/'); + } + } + },maillist_type); + + update_maillist(); + } + + return 'cont'; + }; }; }; |