aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorpzread <netfirewall@gmail.com>2013-06-20 16:17:22 +0800
committerpzread <netfirewall@gmail.com>2013-06-20 16:17:22 +0800
commita66de70527978a4510c6e230fcc56ce890bf20a2 (patch)
treed249403b215329043ac9877b8c92e5d25d305824 /src
parent95efc8ed62d8afcfd76107d6f1058e7e366aefd9 (diff)
downloadtaiwan-online-judge-a66de70527978a4510c6e230fcc56ce890bf20a2.tar
taiwan-online-judge-a66de70527978a4510c6e230fcc56ce890bf20a2.tar.gz
taiwan-online-judge-a66de70527978a4510c6e230fcc56ce890bf20a2.tar.bz2
taiwan-online-judge-a66de70527978a4510c6e230fcc56ce890bf20a2.tar.lz
taiwan-online-judge-a66de70527978a4510c6e230fcc56ce890bf20a2.tar.xz
taiwan-online-judge-a66de70527978a4510c6e230fcc56ce890bf20a2.tar.zst
taiwan-online-judge-a66de70527978a4510c6e230fcc56ce890bf20a2.zip
Done delete mail
Diffstat (limited to 'src')
-rw-r--r--src/html/mail.html17
-rw-r--r--src/js/com.js48
-rw-r--r--src/js/mail.js73
-rw-r--r--src/js/user.js4
-rw-r--r--src/py/mail.py2
5 files changed, 121 insertions, 23 deletions
diff --git a/src/html/mail.html b/src/html/mail.html
index fed43f8..bb10ea2 100644
--- a/src/html/mail.html
+++ b/src/html/mail.html
@@ -29,14 +29,14 @@
<div class="modal hide fade medium_modal readmail">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3 class="title">範例郵件</h3>
+ <h3 class="title"></h3>
</div>
<div class="modal-body container-fluid">
<div class="row-fluid">
<div class="span13">
<div class="input-prepend">
- <span class="add-on">寄件人</span>
- <span class="uneditable-input from_username" type="text"></span>
+ <span class="add-on username_label"></span>
+ <span class="uneditable-input username" type="text"></span>
</div>
<div class="content" exheight=true exratio=38%></div>
</div>
@@ -48,12 +48,17 @@
</div>
<div class="row">
- <div class="offset3 span7 mail">
+ <div class="offset1 span2 oper">
+ <button class="btn btn-primary newmail">寫新郵件</button><br><br>
+ <button class="btn delmail">刪除所選</button>
+ </div>
+ <div class="span8 mail">
<table class="table table-hover maillist">
<thead>
<tr>
- <th class="span2">發信者</th>
- <th class="span3">標題</th>
+ <th class="check"><span class="check check_bold checkall" data-all="mailcheck"></span></th>
+ <th class="span2 username"></th>
+ <th class="span4">標題</th>
<th class="span2 time">時間</th>
</tr>
</thead>
diff --git a/src/js/com.js b/src/js/com.js
index 61af8ab..4105dd6 100644
--- a/src/js/com.js
+++ b/src/js/com.js
@@ -94,7 +94,7 @@ var com = new function(){
var urlchg_hasnext = false;
var check_mbox_url = function(url){
if(url.search(/toj\/m\/.*/) != -1){
-return true;
+ return true;
}else{
return false;
}
@@ -114,6 +114,28 @@ return true;
var url;
var urlpart;
+ function _update_check(j_e,checked){
+ var i;
+ var label;
+ var spans;
+ var j_span;
+
+ if(checked == false){
+ j_e.empty();
+ j_e.attr('checked',null);
+ }else{
+ j_e.append($('<i class="icon-ok"></i>'));
+ j_e.attr('checked','checked');
+ }
+
+ if((label = j_e.attr('data-all')) != undefined){
+ spans = $.find('span.check[data-label="' + label + '"]');
+ for(i = 0;i < spans.length;i++){
+ $(spans[i]).check(checked)
+ }
+ }
+ }
+
that.vus_root = new vus.node(null);
that.vus_mbox = new vus.node('m');
@@ -144,6 +166,28 @@ return true;
that.url_push($(this).attr('href'));
return false;
});
+ $(document).on('click','span.check',function(e){
+ var j_e = $(e.target);
+
+ if(!j_e.is('span.check')){
+ j_e = j_e.parent('span.check');
+ }
+ _update_check(j_e,!j_e.check());
+
+ return false;
+ });
+
+ $.fn.check = function(checked){
+ if(checked != undefined){
+ _update_check(this,checked);
+ }
+
+ if(this.attr('checked') == 'checked'){
+ return true;
+ }else{
+ return false;
+ }
+ }
};
that.url_push = function(url){
@@ -527,7 +571,7 @@ return true;
var offs = new Array;
start = Math.floor(start / step);
- end = Math.floor((end - 1)/ step);
+ end = Math.floor(Math.max(0,(end - 1)) / step);
curr = Math.floor(curr / step);
j_div.empty();
diff --git a/src/js/mail.js b/src/js/mail.js
index 96fed56..780aa90 100644
--- a/src/js/mail.js
+++ b/src/js/mail.js
@@ -11,11 +11,17 @@ var mail = new function(){
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);
+ 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{
@@ -23,19 +29,30 @@ var mail = new function(){
}
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,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>');
+ function mailitem_create(mailid,username,title,time,unread){
+ var j_item = $('<tr class="item"><td class="check"><span class="check" data-label="mailcheck"></span></td><td class="username"></td><td class="title"></td><td class="time"></td></tr>');
- mailitem_set(j_item,mailid,from_username,title,time,unread);
+ mailitem_set(j_item,mailid,username,title,time,unread);
return j_item;
};
function update_maillist(){
+ j_index_page.find('span.checkall').check(false);
+
com.call_backend('core/mail/','list_mail',function(result){
var data;
var mail;
@@ -94,13 +111,41 @@ var mail = new function(){
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);
- index.add_tabnav('寫新郵件','').on('click',function(e){
- j_newmail.modal('show');
- return false;
- });
j_tabnav_inbox = index.add_tabnav('收件匣','/toj/mail/inbox/');
j_tabnav_backup = 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();
});
@@ -155,7 +200,7 @@ var mail = new function(){
data = result.data;
j_readmail.find('h3.title').text(data.title);
- j_readmail.find('span.from_username').text(data.from_username);
+ j_readmail.find('span.username').text(data.from_username);
readmail_content.setValue(data.content);
}
},readmail_mailid);
@@ -171,7 +216,7 @@ var mail = new function(){
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.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');
@@ -204,6 +249,8 @@ var mail = new function(){
}
j_tabnav_inbox.active();
+ j_index_page.find('table.maillist th.username').text('寄件人');
+ j_readmail.find('span.username_label').text('寄件人');
com.call_backend('core/mail/','get_mail_count',function(result){
var i;
@@ -238,6 +285,8 @@ var mail = new function(){
}
j_tabnav_backup.active();
+ j_index_page.find('table.maillist th.username').text('收件人');
+ j_readmail.find('span.username_label').text('收件人');
com.call_backend('core/mail/','get_mail_count',function(result){
var i;
@@ -248,7 +297,7 @@ var mail = new function(){
if(com.is_callerr(result)){
//TODO GE
}else{
- offs = com.create_pagination(j_div,0,result.data.tot_count,maillist_off,2);
+ 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/backup:' + offs[i] + '/');
diff --git a/src/js/user.js b/src/js/user.js
index da4ae2c..259768d 100644
--- a/src/js/user.js
+++ b/src/js/user.js
@@ -78,7 +78,7 @@ var user = new function(){
function _tmp(y){
var now = 0;
- var ay = 50;
+ var ay = 80;
function __ani(){
if(y <= now){
@@ -88,7 +88,7 @@ var user = new function(){
$(window).scrollTop(now);
now = now + ay;
- ay = Math.max(5,ay * 0.87);
+ ay = Math.max(5,ay * 0.86);
setTimeout(__ani,10);
}
diff --git a/src/py/mail.py b/src/py/mail.py
index c63e195..d3e2fd6 100644
--- a/src/py/mail.py
+++ b/src/py/mail.py
@@ -68,7 +68,7 @@ class Mail:
to_uid, uid, self.MAIL_TYPE_INBOX, True, title, content
)
self._add_mail(
- uid, uid, self.MAIL_TYPE_SENT_BACKUP, False, title,content
+ uid, to_uid, self.MAIL_TYPE_SENT_BACKUP, False, title, content
)