summaryrefslogtreecommitdiff
path: root/js/util.js
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-12-16 16:18:49 -0800
committerBrion Vibber <brion@pobox.com>2010-12-16 16:18:49 -0800
commit532178e3ee455218338b619c6cd35089db16ade5 (patch)
tree223a6ac06b90ec218884adc3fe1c7efafd0ca6f9 /js/util.js
parentf901c25012f6c83f70c83bff9e76edb4d01b8373 (diff)
Fix for ticket #2910: fix inconsistencies in notice posting response display that broke help command, could be generally wonky
Previous code was importing nodes from the XHR result into current document, then pulling text content of what might be the right element, then concat'ing that straight into HTML. Eww! Now pulling the text content straight from the XHR result -- same element that we check for existence of -- and using jQuery's own text() to do the getting and setting of text. Also note that some browsers might have been pulling HTML instead of text, or other funkiness.
Diffstat (limited to 'js/util.js')
-rw-r--r--js/util.js53
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();