X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=js%2Futil.js;h=0bda55b602d9cda95dbf832dc3f6b0db491b3812;hb=3302067aad62d74c7b79545d1be9abc83f65ef89;hp=cee238836a3515d093174b8483c3db48f8b3aa65;hpb=0a2c51510ca785b5e3564fc0830518527929dc38;p=quix0rs-gnu-social.git diff --git a/js/util.js b/js/util.js index cee238836a..0bda55b602 100644 --- a/js/util.js +++ b/js/util.js @@ -57,6 +57,9 @@ var SN = { // StatusNet } }, + V: { // Variables + }, + /** * Map of localized message strings exported to script from the PHP * side via Action::getScriptMessages(). @@ -216,6 +219,18 @@ var SN = { // StatusNet return url; }, + FormNoticeUniqueID: function (form) { + var oldId = form.attr('id'); + var newId = 'form_notice_' + Math.floor(Math.random()*999999999); + var attrs = ['name', 'for', 'id']; + for (var key in attrs) { + form.find("[" + attrs[key] + "~='" + oldId + "']").each(function () { + var newAttr = $(this).attr(attrs[key]).replace(oldId, newId); + $(this).attr(attrs[key], newAttr); + }); + } + }, + /** * Grabs form data and submits it asynchronously, with 'ajax=1' * parameter added to the rest. @@ -699,27 +714,38 @@ var SN = { // StatusNet var replyItem = $('li.notice-reply', list); if (replyItem.length == 0) { replyItem = $('
  • '); + } + replyForm = replyItem.children('form'); + if (replyForm.length == 0) { + // Let's try another trick to avoid fetching by URL + var noticeForm = $('#input_form_status > form'); + if (noticeForm.length == 0) { + // No notice form found on the page, so let's just + // fetch a fresh copy of the notice form over AJAX. + $.ajax({ + url: SN.V.urlNewNotice, + data: {ajax: 1, inreplyto: id}, + success: function (data, textStatus, xhr) { + var formEl = document._importNode($('form', data)[0], true); + replyForm = $(formEl); + replyItem.append(replyForm); + list.append(replyItem); - // Fetch a fresh copy of the notice form over AJAX. - var url = $('#input_form_status > form').attr('action'); - $.ajax({ - url: url, - data: {ajax: 1, inreplyto: id}, - success: function (data, textStatus, xhr) { - var formEl = document._importNode($('form', data)[0], true); - replyForm = $(formEl); - replyItem.append(replyForm); - list.append(replyItem); - - SN.Init.NoticeFormSetup(replyForm); - nextStep(); - }, - }); - } else { - replyForm = replyItem.children('form'); + SN.Init.NoticeFormSetup(replyForm); + nextStep(); + }, + }); + // We do everything relevant in 'success' above + return; + } + replyForm = noticeForm.clone(); SN.Init.NoticeFormSetup(replyForm); - nextStep(); + replyItem.append(replyForm); + list.append(replyItem); } + // replyForm is set, we're not fetching by URL... + // Next setp is to configure in-reply-to etc. + nextStep(); }, /** @@ -1466,6 +1492,7 @@ var SN = { // StatusNet return false; } SN.U.NoticeLocationAttach(form); + SN.U.FormNoticeUniqueID(form); SN.U.FormNoticeXHR(form); SN.U.FormNoticeEnhancements(form); SN.U.NoticeDataAttach(form);