LINUX.ORG.RU

Форма ответа в топиках без обновления


0

0

http://pastebin.ubuntu.com/293886/ скриптик для разворачивания/сворачивания формочки для ответов. Поймать почему [ Удалить ] тоже начинает сворачивать/разворачивать пока не удалось, похоже что это глюк jQuery.

Работает в Opera + jQuery

★★★★★

да, там бы убрать еще link.remove() :)

xpahos ★★★★★
() автор топика

Если интересно посмотри на этот кусок из LorTreeView


var options = {
	// target: '#quickanswerdiv',
	// post-submit callback
	success: showResponse,
	cache: false
};


// quick answer
	$('a:contains("Ответить на это сообщение")', this).click(function(event) {
		event.preventDefault();
		quickAnswer(this);
	});
	


function quickAnswer(elem) {
	var topic;
	var replyto;
	var href = elem.search;
	var session = /JSESSIONID=(\w+)/.exec(document.cookie)[1];
	var subj = 'Re: ' + $('div.msg h1').get(0).textContent;

var seltxt;
try {
	seltxt = window.getSelection().toString();
} catch(err){
	alert(err);
}
if (seltxt) {
	seltxt = '> ' + seltxt + "\n\n";
}

	$("#quickanswerdiv").remove();

	var formhtml1 = '<form id="quickanswerform" method="POST" action="add_comment.jsp"> <input type="hidden" name="session" value="' + session + '"/>  <input type="hidden" name="topic" value="';
	var formhtml2 = '<input type="text" name="title" size="73" value="'+subj+'"/><br> <textarea name="msg" cols="70" rows="10" onkeypress="return ctrl_enter(event, this.form);">'+seltxt+'</textarea><br> <select name="mode"> <option value="ntobrq">User line breaks w/quoting </option><option value="quot">TeX paragraphs w/quoting </option><option value="tex">TeX paragraphs w/o quoting </option><option value="ntobr">User line break w/o quoting </option><option value="html">Ignore line breaks </option><option value="lorcode" selected>LORCODE</option></select> <select name="autourl"> <option value="1">Auto URL </option> <option value="0">No Auto URL </option> </select> <input type="hidden" name="texttype" value="0"/><br><input type="submit" value="Отправить"/><input type="submit" value="Предпросмотр" name="preview"/></form>';

	if (href.match(/msgid=(\d+)/)) {
		topic   = href.replace(/^.*msgid=(\d+).*$/, "$1");
	    formhtml1 = formhtml1 + topic + '"/>';
	} else {
		topic   = href.replace(/^.*topic=(\d+).*$/, "$1");
		replyto = href.replace(/^.*replyto=(\d+).*$/, "$1");
	    formhtml1 = formhtml1 + topic + '"/> <input type="hidden" name="replyto" value="'+replyto+'"/>';
	}

	$(elem).parent().append('<div id="quickanswerdiv">' + formhtml1 + formhtml2 + '</div>');

	$("#quickanswerform").ajaxForm(options);
}



function showResponse(responseText, statusText) {
	var h1txt = $(responseText).find('h1:contains("шибка")').text();
	if (h1txt) {
		alert(h1txt);
	}

	h1txt = $(responseText).find('p:contains("Ваше сообщение")').text();
	if (h1txt) {
		var rmsg = $(responseText).find('div.messages');
		if (rmsg) {
			$("#popupPreview").get(0).innerHTML = rmsg.get(rmsg.length - 1).innerHTML;
			$("#popupPreview").show();
			//st == setTimeout
			st('$("#popupPreview").hide();',5000);
		}
	} else {
		$("#quickanswerdiv").remove();
	}
}



sdio ★★★★★
()
Ответ на: комментарий от sdio

Это пока предварительный вариант без особых извратов. Разберусь с делами, нарисую что-нить получше :)

xpahos ★★★★★
() автор топика

Добавил в view-message невидимую форму добавления комментария. Поправь plz скрипт чтобы он использовал ее, а не рисовал новую.

В форме нужно:

  • выставить replyto в реальный
  • переписать session, поскольку он может быть старый из-за кеширования в броузере

ok?

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

> ok?

да, конечно. Попробую вечером что-нить придумать.

xpahos ★★★★★
() автор топика
Ответ на: комментарий от maxcom

а дай div'у какой-нить id = "i_like_to_move_it_move_it" и парочку, троечку br запихни плз, я сделал просто перемещение дива по странице.

xpahos ★★★★★
() автор топика

тест

xpahos ★★★★★
() автор топика
Ответ на: комментарий от xpahos

1. можно из скрипта добавлять пару br перед формой, ну или добавить сразу 2. сделай, пожалуйста, проверку replyto, если = 0, то пусть добавляет в топик. Тут получается проблемка, если отвечать на тему, то нужно удалить поле replyto совсем. Если пользователь передумает отвечать, то нужно создавать еще раз элемент replyto в форме. 3. http://pastebin.ubuntu.com/297805/ ну и собственно код :)

xpahos ★★★★★
() автор топика
Ответ на: комментарий от maxcom

Отлично, очень удобно. Еще бы так же удалять сообщения, было бы вообще круто.

ps сейчас рост скора тормозится при удалении своего коммента?

a3
()
Ответ на: комментарий от a3

> ps сейчас рост скора тормозится при удалении своего коммента?

нет

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

поправил. CSS наверняка закешировался в броузере, так что видно будет не сразу

maxcom ★★★★★
()
Ответ на: комментарий от Unclown

да, я видел но не понял почему так получается.

maxcom ★★★★★
()
Ответ на: комментарий от Unclown

Стишки о Линуксе, и о Лоре. (комментарий)

В форуме же включена навигация по ctrl+left and ctrl+right для перехода по пред/след. теме. Раньше форма ответа была отдельным окном без этих клавиш, а теперь прямо в форуме с.

sdio ★★★★★
()
Ответ на: комментарий от Unclown

у меня тоже навигация работает, я просто не понял что речь о ней

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Эт не ко мне. Чукча не строитель, чукча ломатель

Unclown
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.