var mail = new function(){ var that = this; var j_index_page; var j_maillist; var j_newmail; var j_readmail; var inbox_tabnav; var backup_tabnav; var readmail_mailid = null; var maillist_type = null; var maillist_off = null; function mailitem_set(j_item,mailid,username,title,time,unread){ var j_span; j_item.find('td.username').text(username); j_item.find('td.title').text(title); j_item.find('td.time').text(time); j_span = j_item.find('span.check'); j_span.check(false); j_span.attr('mailid',mailid); if(unread == true){ j_item.addClass('warning'); }else{ j_item.removeClass('warning'); } j_item.off('click').on('click',function(e){ var j_e = $(e.target); if(j_e.is('td.check')){ j_e.find('span.check').click(); return; } if(j_e.parents('td.check').length > 0){ return; } readmail_mailid = mailid; j_readmail.modal('show'); return false; }); }; function mailitem_create(mailid,username,title,time,unread){ var j_item = $(''); mailitem_set(j_item,mailid,username,title,time,unread); return j_item; }; function update_maillist(){ if(maillist_type == null){ return; } j_index_page.find('span.checkall').check(false); 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; var pfix; if(com.is_callerr(result)){ index.add_alert('','警告','信箱發生錯誤'); }else{ if(maillist_type == 1){ pfix = '/toj/mail/inbox:'; }else if(maillist_type == 2){ pfix = '/toj/mail/backup:'; } 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',pfix + offs[i] + '/'); } } },maillist_type); com.call_backend('core/mail/','list_mail',function(result){ var data; var mailo; var items; var j_item; var i; if(com.is_callerr(result)){ index.add_alert('','警告','信箱發生錯誤'); }else{ data = result.data; items = j_maillist.find('tr.item'); for(i = 0;i < Math.min(items.length,data.length);i++){ mailo = data[i]; mailitem_set($(items[i]),mailo.mailid,mailo.from_username,mailo.title,com.get_timestring(mailo.send_time),mailo.unread); } for(;i < data.length;i++){ mailo = data[i]; j_item = mailitem_create(mailo.mailid,mailo.from_username,mailo.title,com.get_timestring(mailo.send_time),mailo.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'); imc.Proxy.instance.register_call('core/mail/','update_mail',function(callback){ update_maillist(); callback('Success'); }); mail_node.url_chg = function(direct,url_upart,url_dpart,param){ if(direct == 'in'){ 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); inbox_tabnav = index.add_tabnav('收件匣','/toj/mail/inbox/'); backup_tabnav = index.add_tabnav('寄件備份','/toj/mail/backup/'); j_index_page.find('button.newmail').on('click',function(e){ j_newmail.modal('show'); }); j_index_page.find('button.delmail').on('click',function(e){ var i; var mails; var count = 0; var fail = 0; mails = j_maillist.find('span.check[checked="checked"]'); count = mails.length; for(i = 0;i < mails.length;i++){ com.call_backend('core/mail/','del_mail',function(result){ console.log(result); if(com.is_callerr(result)){ fail++; } count--; if(count == 0){ if(fail == 0){ index.add_alert('alert-success','成功','郵件已刪除',true); }else{ index.add_alert('alert-error','失敗',fail + '封郵件刪除失敗',true); } update_maillist(); } },parseInt($(mails[i]).attr('mailid'))); } }); j_newmail.on('shown',function(e){ newmail_content.refresh(); }); j_newmail.on('hide',function(e){ j_newmail.find('input').val(''); newmail_content.setValue(''); }); j_newmail.find('button.submit').on('click',function(e){ var to_username = j_newmail.find('input.to_username').val(); var title = j_newmail.find('input.title').val(); var content = newmail_content.getValue(); com.call_backend('core/mail/','send_mail',function(result){ var data = result.data; var errmsg; if(com.is_callerr(result)){ if(data == 'Etitle_too_short'){ errmsg = '郵件標題過短'; }else if(data == 'Etitle_too_long'){ errmsg = '郵件標題過長'; }else if(data == 'Econtent_too_short'){ errmsg = '郵件內容過短'; }else if(data == 'Econtent_too_long'){ errmsg = '郵件內容過長'; }else if(data == 'Eto_username'){ errmsg = '收件人不存在'; }else{ errmsg = '信件寄出發生錯誤'; } index.add_alert('alert-error','失敗',errmsg,true); }else{ index.add_alert('alert-success','成功','信件已寄出',true); j_newmail.modal('hide'); } },to_username,title,content); }); j_newmail.find('button.cancel').on('click',function(e){ j_newmail.modal('hide'); }); j_readmail.on('show',function(e){ com.call_backend('core/mail/','recv_mail',function(result){ var data; if(com.is_callerr(result)){ index.add_alert('','警告','讀取郵件發生錯誤'); }else{ data = result.data; j_readmail.find('h3.title').text(data.title); j_readmail.find('span.username').text(data.from_username); readmail_content.setValue(data.content); } },readmail_mailid); }); 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(''); readmail_mailid = null; update_maillist(); }); j_readmail.find('button.reply').on('click',function(e){ j_newmail.find('input.to_username').val(j_readmail.find('span.username').text()); j_newmail.find('input.title').val('Re: ' + j_readmail.find('h3.title').text()); j_readmail.modal('hide'); j_newmail.modal('show'); }); 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); } inbox_tabnav.active(); j_index_page.find('table.maillist th.username').text('寄件人'); j_readmail.find('span.username_label').text('寄件人'); update_maillist(); }else if(direct == 'out'){ maillist_type = null; maillist_off = null; } 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); } backup_tabnav.active(); j_index_page.find('table.maillist th.username').text('收件人'); j_readmail.find('span.username_label').text('收件人'); update_maillist(); }else if(direct == 'out'){ maillist_type = null; maillist_off = null; } return 'cont'; }; }; };