summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorNick Holliday <n.g.holliday@gmail.com>2010-03-23 16:50:24 +0000
committerCraig Andrews <candrews@integralblue.com>2010-03-26 18:28:54 -0400
commit260f00d60bc83ac641d6fbe465e70aec33ccd9be (patch)
tree881c63245e4a24b0f7cb2faf40ba52186160ca76 /js
parent92ded7c6cb56056a89bc8b3caabd08049104898e (diff)
Multiple file upload handling.
Diffstat (limited to 'js')
-rw-r--r--js/util.js53
1 files changed, 34 insertions, 19 deletions
diff --git a/js/util.js b/js/util.js
index 1320d11b4..d62adf33a 100644
--- a/js/util.js
+++ b/js/util.js
@@ -30,7 +30,8 @@ var SN = { // StatusNet
CounterBlackout: false,
MaxLength: 140,
PatternUsername: /^[0-9a-zA-Z\-_.]*$/,
- HTTP20x30x: [200, 201, 202, 203, 204, 205, 206, 300, 301, 302, 303, 304, 305, 306, 307]
+ HTTP20x30x: [200, 201, 202, 203, 204, 205, 206, 300, 301, 302, 303, 304, 305, 306, 307],
+ UploadCounter: 0
},
S: { // Selector
@@ -172,6 +173,7 @@ var SN = { // StatusNet
FormNoticeXHR: function(form) {
SN.C.I.NoticeDataGeo = {};
form.append('<input type="hidden" name="ajax" value="1"/>');
+
form.ajaxForm({
dataType: 'xml',
timeout: '60000',
@@ -228,9 +230,10 @@ var SN = { // StatusNet
}
else {
if (parseInt(xhr.status) === 0 || jQuery.inArray(parseInt(xhr.status), SN.C.I.HTTP20x30x) >= 0) {
- form
- .resetForm()
- .find('#'+SN.C.S.NoticeDataAttachSelected).remove();
+ form.resetForm();
+ SN.U.NoticeClearAttachments(form);
+ SN.C.I.UploadCounter = 0;
+ SN.U.NoticeNewAttachment($('fieldset', form));
SN.U.FormNoticeEnhancements(form);
}
else {
@@ -287,8 +290,9 @@ var SN = { // StatusNet
}
}
form.resetForm();
- form.find('#'+SN.C.S.NoticeInReplyTo).val('');
- form.find('#'+SN.C.S.NoticeDataAttachSelected).remove();
+ SN.U.NoticeClearAttachments(form);
+ SN.C.I.UploadCounter = 0;
+ SN.U.NoticeNewAttachment($('fieldset', form));
SN.U.FormNoticeEnhancements(form);
}
},
@@ -309,6 +313,11 @@ var SN = { // StatusNet
}
});
},
+
+ NoticeClearAttachments: function(form) {
+ $('input:file', form).remove();
+ $('div[class=' + SN.C.S.Success + ']', form).remove();
+ },
NoticeReply: function() {
if ($('#'+SN.C.S.NoticeDataText).length > 0 && $('#content .notice_reply').length > 0) {
@@ -468,25 +477,31 @@ var SN = { // StatusNet
}
},
- NoticeDataAttach: function() {
- NDA = $('#'+SN.C.S.NoticeDataAttach);
+ NoticeDataAttach: function(NDANum) {
+ NDA = $('#'+SN.C.S.NoticeDataAttach+NDANum);
NDA.change(function() {
- S = '<div id="'+SN.C.S.NoticeDataAttachSelected+'" class="'+SN.C.S.Success+'"><code>'+$(this).val()+'</code> <button class="close">&#215;</button></div>';
- NDAS = $('#'+SN.C.S.NoticeDataAttachSelected);
- if (NDAS.length > 0) {
- NDAS.replaceWith(S);
- }
- else {
- $('#'+SN.C.S.FormNotice).append(S);
- }
- $('#'+SN.C.S.NoticeDataAttachSelected+' button').click(function(){
- $('#'+SN.C.S.NoticeDataAttachSelected).remove();
+ S = '<div id="'+SN.C.S.NoticeDataAttachSelected+SN.C.I.UploadCounter+'" class="'+SN.C.S.Success+'"><code>'+$(this).val()+'</code> <button class="close">&#215;</button></div>';
+ $('#'+SN.C.S.FormNotice).append(S);
+
+ $('#'+SN.C.S.NoticeDataAttachSelected+SN.C.I.UploadCounter+' button').click(function(){
+ $('#'+this.parentNode.getAttribute("id")).remove();
+ $('#'+this.parentNode.getAttribute("id").replace("_selected", "")).remove();
NDA.val('');
return false;
});
+ SN.C.I.UploadCounter++;
+ NDA.attr('style', 'display: none;');
+ SN.U.NoticeNewAttachment(NDA.parent());
+ $('#notice_data-attach-label').attr('for', SN.C.S.NoticeDataAttach+SN.C.I.UploadCounter);
});
},
+
+ NoticeNewAttachment: function(parent) {
+ NEWFILE = '<input id="'+SN.C.S.NoticeDataAttach+SN.C.I.UploadCounter+'" class="attach" type="file" name="attach'+SN.C.I.UploadCounter+'" title="'+NoticeAttachment_text.AttachFile+'"/>';
+ parent.append(NEWFILE);
+ SN.U.NoticeDataAttach(SN.C.I.UploadCounter);
+ },
NoticeLocationAttach: function() {
var NLat = $('#'+SN.C.S.NoticeLat).val();
@@ -720,7 +735,7 @@ var SN = { // StatusNet
SN.U.FormNoticeEnhancements($(this));
});
- SN.U.NoticeDataAttach();
+ SN.U.NoticeDataAttach("");
}
},