diff options
Diffstat (limited to 'js/util.js')
-rw-r--r-- | js/util.js | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/js/util.js b/js/util.js index 99f15e717..2c79c1db6 100644 --- a/js/util.js +++ b/js/util.js @@ -315,6 +315,29 @@ var SN = { // StatusNet FormNoticeXHR: function(form) { SN.C.I.NoticeDataGeo = {}; form.append('<input type="hidden" name="ajax" value="1"/>'); + + /** + * Show a response feedback bit under the new-notice dialog. + * + * @param {String} cls: CSS class name to use ('error' or 'success') + * @param {String} text + * @access private + */ + var showFeedback = function(cls, text) { + form.append( + $('<p class="form_response"></p>') + .addClass(cls) + .text(text) + ); + }; + + /** + * Hide the previous response feedback, if any. + */ + var removeFeedback = function() { + form.find('.form_response').remove(); + }; + form.ajaxForm({ dataType: 'xml', timeout: '60000', @@ -361,9 +384,10 @@ var SN = { // StatusNet .find('#'+SN.C.S.NoticeActionSubmit) .removeClass(SN.C.S.Disabled) .removeAttr(SN.C.S.Disabled, SN.C.S.Disabled); - form.find('.form_response').remove(); + removeFeedback(); if (textStatus == 'timeout') { - form.append('<p class="form_response error">Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.</p>'); + // @fixme i18n + showFeedback('error', 'Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.'); } else { var response = SN.U.GetResponseXML(xhr); @@ -378,28 +402,27 @@ var SN = { // StatusNet SN.U.FormNoticeEnhancements(form); } else { - form.append('<p class="form_response error">(Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.</p>'); + // @fixme i18n + showFeedback('error', '(Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.'); } } } }, success: function(data, textStatus) { - form.find('.form_response').remove(); - var result; - if ($('#'+SN.C.S.Error, data).length > 0) { - result = document._importNode($('p', data)[0], true); - result = result.textContent || result.innerHTML; - form.append('<p class="form_response error">'+result+'</p>'); + removeFeedback(); + var errorResult = $('#'+SN.C.S.Error, data); + if (errorResult.length > 0) { + showFeedback('error', errorResult.text()); } else { if($('body')[0].id == 'bookmarklet') { + // @fixme self is not referenced anywhere? self.close(); } - if ($('#'+SN.C.S.CommandResult, data).length > 0) { - result = document._importNode($('p', data)[0], true); - result = result.textContent || result.innerHTML; - form.append('<p class="form_response success">'+result+'</p>'); + var commandResult = $('#'+SN.C.S.CommandResult, data); + if (commandResult.length > 0) { + showFeedback('success', commandResult.text()); } else { // New notice post was successful. If on our timeline, show it! @@ -428,9 +451,7 @@ var SN = { // StatusNet else { // Not on a timeline that this belongs on? // Just show a success message. - result = document._importNode($('title', data)[0], true); - result_title = result.textContent || result.innerHTML; - form.append('<p class="form_response success">'+result_title+'</p>'); + showFeedback('success', $('title', data).text()); } } form.resetForm(); |