]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - js/util.js
Fix for ticket #2910: fix inconsistencies in notice posting response display that...
[quix0rs-gnu-social.git] / js / util.js
index 99f15e717113f8b7a07d0e47d5ba2e5cf06479f6..2c79c1db668050faaa301b07a0b33f879c107e87 100644 (file)
@@ -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();