diff options
-rw-r--r-- | actions/newnotice.php | 35 | ||||
-rw-r--r-- | js/util.js | 53 | ||||
-rw-r--r-- | lib/noticeform.php | 14 | ||||
-rw-r--r-- | theme/base/css/display.css | 12 | ||||
-rw-r--r-- | theme/default/css/display.css | 7 |
5 files changed, 49 insertions, 72 deletions
diff --git a/actions/newnotice.php b/actions/newnotice.php index 2aa354870..ed0fa1b2b 100644 --- a/actions/newnotice.php +++ b/actions/newnotice.php @@ -164,25 +164,22 @@ class NewnoticeAction extends Action $replyto = 'false'; } - $uploads = array(); - foreach($_FILES as $name => $value) { - if(substr($name, 0, 6) == "attach") { - $upload = MediaFile::fromUpload($name); - if (isset($upload)) { - $content_shortened .= ' ' . $upload->shortUrl(); - } - } - } - if (Notice::contentTooLong($content_shortened)) { - foreach($uploads as $upload) { + $upload = null; + $upload = MediaFile::fromUpload('attach'); + + if (isset($upload)) { + + $content_shortened .= ' ' . $upload->shortUrl(); + + if (Notice::contentTooLong($content_shortened)) { $upload->delete(); + $this->clientError( + sprintf( + _('Max notice size is %d chars, including attachment URL.'), + Notice::maxContent() + ) + ); } - $this->clientError( - sprintf( - _('Max notice size is %d chars, including attachment URL.'), - Notice::maxContent() - ) - ); } $options = array('reply_to' => ($replyto == 'false') ? null : $replyto); @@ -200,10 +197,12 @@ class NewnoticeAction extends Action $notice = Notice::saveNew($user->id, $content_shortened, 'web', $options); - foreach($uploads as $upload) { + if (isset($upload)) { $upload->attachToNotice($notice); } + + if ($this->boolean('ajax')) { header('Content-Type: text/xml;charset=utf-8'); $this->xw->startDocument('1.0', 'UTF-8'); diff --git a/js/util.js b/js/util.js index d62adf33a..1320d11b4 100644 --- a/js/util.js +++ b/js/util.js @@ -30,8 +30,7 @@ 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], - UploadCounter: 0 + HTTP20x30x: [200, 201, 202, 203, 204, 205, 206, 300, 301, 302, 303, 304, 305, 306, 307] }, S: { // Selector @@ -173,7 +172,6 @@ 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', @@ -230,10 +228,9 @@ var SN = { // StatusNet } else { if (parseInt(xhr.status) === 0 || jQuery.inArray(parseInt(xhr.status), SN.C.I.HTTP20x30x) >= 0) { - form.resetForm(); - SN.U.NoticeClearAttachments(form); - SN.C.I.UploadCounter = 0; - SN.U.NoticeNewAttachment($('fieldset', form)); + form + .resetForm() + .find('#'+SN.C.S.NoticeDataAttachSelected).remove(); SN.U.FormNoticeEnhancements(form); } else { @@ -290,9 +287,8 @@ var SN = { // StatusNet } } form.resetForm(); - SN.U.NoticeClearAttachments(form); - SN.C.I.UploadCounter = 0; - SN.U.NoticeNewAttachment($('fieldset', form)); + form.find('#'+SN.C.S.NoticeInReplyTo).val(''); + form.find('#'+SN.C.S.NoticeDataAttachSelected).remove(); SN.U.FormNoticeEnhancements(form); } }, @@ -313,11 +309,6 @@ 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) { @@ -477,31 +468,25 @@ var SN = { // StatusNet } }, - NoticeDataAttach: function(NDANum) { - NDA = $('#'+SN.C.S.NoticeDataAttach+NDANum); + NoticeDataAttach: function() { + NDA = $('#'+SN.C.S.NoticeDataAttach); NDA.change(function() { - S = '<div id="'+SN.C.S.NoticeDataAttachSelected+SN.C.I.UploadCounter+'" class="'+SN.C.S.Success+'"><code>'+$(this).val()+'</code> <button class="close">×</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(); + S = '<div id="'+SN.C.S.NoticeDataAttachSelected+'" class="'+SN.C.S.Success+'"><code>'+$(this).val()+'</code> <button class="close">×</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(); 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(); @@ -735,7 +720,7 @@ var SN = { // StatusNet SN.U.FormNoticeEnhancements($(this)); }); - SN.U.NoticeDataAttach(""); + SN.U.NoticeDataAttach(); } }, diff --git a/lib/noticeform.php b/lib/noticeform.php index a55839de0..7278c41a9 100644 --- a/lib/noticeform.php +++ b/lib/noticeform.php @@ -189,14 +189,10 @@ class NoticeForm extends Form } if (common_config('attachments', 'uploads')) { - $this->out->element('label', array('id' => 'notice_data-attach-label', - 'class' => 'attach-label', - 'for' => 'notice_data-attach'), - _('Attach')); + $this->out->element('label', array('for' => 'notice_data-attach'),_('Attach')); $this->out->element('input', array('id' => 'notice_data-attach', - 'class' => 'attach', 'type' => 'file', - 'name' => 'attach0', + 'name' => 'attach', 'title' => _('Attach a file'))); $this->out->hidden('MAX_FILE_SIZE', common_config('attachments', 'file_quota')); } @@ -216,10 +212,8 @@ class NoticeForm extends Form $this->out->checkbox('notice_data-geo', _('Share my location'), true); $this->out->elementEnd('div'); $this->out->inlineScript(' var NoticeDataGeo_text = {'. - 'ShareDisable: ' .json_encode(_('Do not share my location')).','. - 'ErrorTimeout: ' .json_encode(_('Sorry, retrieving your geo location is taking longer than expected, please try again later')). - '} ; var NoticeAttachment_text = {'. - 'AttachFile: ' . json_encode(_('Attach a file')) . + 'ShareDisable: "'._('Do not share my location').'",'. + 'ErrorTimeout: "'._('Sorry, retrieving your geo location is taking longer than expected, please try again later').'"'. '}'); } diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 768d78ac2..f48bdf55e 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -550,19 +550,19 @@ float:left; font-size:1.3em; margin-bottom:7px; } -.form_notice .attach-label, -.form_notice .attach { +.form_notice label[for=notice_data-attach], +.form_notice #notice_data-attach { position:absolute; top:25px; right:10.5%; cursor:pointer; } -.form_notice .attach-label { +.form_notice label[for=notice_data-attach] { text-indent:-9999px; width:16px; height:16px; } -.form_notice .attach { +.form_notice #notice_data-attach { padding:0; height:16px; } @@ -606,7 +606,7 @@ width:81.5%; margin-bottom:0; line-height:1.618; } -.form_notice code { +.form_notice #notice_data-attach_selected code { float:left; width:80%; display:block; @@ -614,7 +614,7 @@ overflow:auto; margin-right:2.5%; font-size:1.1em; } -.form_notice button.close { +.form_notice #notice_data-attach_selected button.close { float:right; font-size:0.8em; } diff --git a/theme/default/css/display.css b/theme/default/css/display.css index 44dc9a7c3..5e3748cb7 100644 --- a/theme/default/css/display.css +++ b/theme/default/css/display.css @@ -154,15 +154,14 @@ color:#333333; .entity_actions .dialogbox input { color:#000000; } -.form_notice .attach-label { +.form_notice label[for=notice_data-attach] { background-position:0 -328px; } -.form_notice .attach { -position: absolute; +.form_notice #notice_data-attach { opacity:0; } -.form_notice .attach-label, +.form_notice label[for=notice_data-attach], #export_data li a.rss, #export_data li a.atom, #export_data li a.foaf, |