4
0

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.
Esse commit está contido em:
Brion Vibber 2010-12-16 16:18:49 -08:00
commit 532178e3ee
2 arquivos alterados com 38 adições e 17 exclusões

Ver arquivo

@ -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();

2
js/util.min.js externo

Diff do arquivo suprimido porque uma ou mais linhas são muito longas