Reply notice forms are functional again, but not AJAX

This commit is contained in:
Mikael Nordfeldth 2015-03-06 21:20:46 +01:00
parent 8abc2d3b8d
commit 45861c6d9c
2 changed files with 31 additions and 35 deletions

View File

@ -661,41 +661,32 @@ var SN = { // StatusNet
} }
}; };
// See if the form's already open... // Create the reply form entry at the end
replyForm = $('.notice-reply-form', list); var replyItem = $('li.notice-reply', list);
if (replyForm.length > 0) { if (replyItem.length == 0) {
// Update the existing form... replyItem = $('<li class="notice-reply"></li>');
nextStep();
var intermediateStep = function (formMaster) {
var formEl = document._importNode(formMaster, true);
replyItem.append(formEl);
list.append(replyItem); // *after* the placeholder
var form = $(formEl);
replyForm = form;
SN.Init.NoticeFormSetup(form);
nextStep();
};
if (SN.C.I.NoticeFormMaster) {
// We've already saved a master copy of the form.
// Clone it in!
intermediateStep(SN.C.I.NoticeFormMaster);
}
} else { } else {
// Create the reply form entry at the end replyItem.show();
var replyItem = $('li.notice-reply > form', list); replyTextarea = replyItem.find('textarea');
if (replyItem.length == 0) { if (replyTextarea) {
replyItem = $('<li class="notice-reply"></li>'); replyTextarea.focus();
var intermediateStep = function (formMaster) {
var formEl = document._importNode(formMaster, true);
replyItem.append(formEl);
list.append(replyItem); // *after* the placeholder
var form = $(formEl);
replyForm = form;
SN.Init.NoticeFormSetup(form);
nextStep();
};
if (SN.C.I.NoticeFormMaster) {
// We've already saved a master copy of the form.
// Clone it in!
intermediateStep(SN.C.I.NoticeFormMaster);
} else {
// Fetch a fresh copy of the notice form over AJAX.
// Warning: this can have a delay, which looks bad.
// @fixme this fallback may or may not work
var url = $('#form_notice').attr('action');
$.get(url, {ajax: 1}, function (data, textStatus, xhr) {
intermediateStep($('form', data)[0]);
});
}
} }
} }
}, },
@ -706,6 +697,7 @@ var SN = { // StatusNet
* Uses 'on' rather than 'live' or 'bind', so applies to future as well as present items. * Uses 'on' rather than 'live' or 'bind', so applies to future as well as present items.
*/ */
NoticeInlineReplySetup: function () { NoticeInlineReplySetup: function () {
$('#content .notice-reply').hide();
// Expand conversation links // Expand conversation links
$(document).on('click', 'li.notice-reply-comments a', function () { $(document).on('click', 'li.notice-reply-comments a', function () {
var url = $(this).attr('href'); var url = $(this).attr('href');
@ -1418,7 +1410,7 @@ var SN = { // StatusNet
// Only close if there's been no edit. // Only close if there's been no edit.
if (cur == '' || cur == textarea.data('initialText')) { if (cur == '' || cur == textarea.data('initialText')) {
var parentNotice = replyItem.closest('li.notice'); var parentNotice = replyItem.closest('li.notice');
replyItem.remove(); replyItem.hide();
parentNotice.find('li.notice-reply-placeholder').show(); parentNotice.find('li.notice-reply-placeholder').show();
} }
} }

View File

@ -79,6 +79,10 @@ option {
padding-bottom: 0px; padding-bottom: 0px;
} }
.hidden {
display: none;
}
#wrap { #wrap {
position: relative; position: relative;
width: 960px; width: 960px;