aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/mail.js
diff options
context:
space:
mode:
authorpzread <netfirewall@gmail.com>2013-06-20 01:48:44 +0800
committerpzread <netfirewall@gmail.com>2013-06-20 01:48:44 +0800
commit95efc8ed62d8afcfd76107d6f1058e7e366aefd9 (patch)
tree530371955ad7548d68c9e1f0c1c890ae6e3c35a9 /src/js/mail.js
parent7623d6373ee00a8b8fbe92f7adc16296aa73688b (diff)
downloadtaiwan-online-judge-95efc8ed62d8afcfd76107d6f1058e7e366aefd9.tar
taiwan-online-judge-95efc8ed62d8afcfd76107d6f1058e7e366aefd9.tar.gz
taiwan-online-judge-95efc8ed62d8afcfd76107d6f1058e7e366aefd9.tar.bz2
taiwan-online-judge-95efc8ed62d8afcfd76107d6f1058e7e366aefd9.tar.lz
taiwan-online-judge-95efc8ed62d8afcfd76107d6f1058e7e366aefd9.tar.xz
taiwan-online-judge-95efc8ed62d8afcfd76107d6f1058e7e366aefd9.tar.zst
taiwan-online-judge-95efc8ed62d8afcfd76107d6f1058e7e366aefd9.zip
Send and read mail
Diffstat (limited to 'src/js/mail.js')
-rw-r--r--src/js/mail.js215
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';
+ };
};
};