Перейти к публикации

Рекомендованные сообщения

Порой комментариев довольно много и просто обращения к конкретному юзеру недостаточно, чтобы сохранить цепочку субдискуссии. Т.е. Если комментируется какая то статья, и в комментариях кто то задает вопрос, ответы на него лучше как то выделить (т.е. ответить на этот комент), чтобы последующие каменты относительно самой статьи не сливались.

Только важно, чтобы при ответе на конкретный комментарий они добавлялись непосредственно в одну цепочку, а не в обычном порядке.

1 коментарий

2 коментарий

3 коментарий

-3.1 коментарий

-3.2 коментарий

4. коментарий

5...

...

При ответе на 3 камент уже с наличием 4-го и т.д. новый камент добавляется в цепочку:

1 коментарий

2 коментарий

3 коментарий

-3.1 коментарий

-3.2 коментарий

-3.3 коментарий

4. коментарий

5...

...

Изменено пользователем nickostyle
Ссылка на сообщение
Поделиться на других сайтах

У тебя при этом впоследствии такая каша будет, что ты сам запутаешься... ИМХО

Обычно ответ на конкретный пост выделяют цитатой...

Ссылка на сообщение
Поделиться на других сайтах

давно хотел реализовать такое на дле..

даже заказывал у программиста, который просил 15$ за подобную доработку.

но так сложилось что проект свернули и хак стал ненужен, поэтому и не был оплачен.

еще бы сделать плавной измнение фона как на news.ru).

Ссылка на сообщение
Поделиться на других сайтах

·• Greeze •·, с точки зрения нагрузки не очень хороший хак.

еще бы сделать плавной измнение фона как на news.ru).
а как там, покажи :)
Ссылка на сообщение
Поделиться на других сайтах

·• Greeze •·, ведь специально зарегистрировался там, чтобы посмотреть =)

Знаешь есть ява скрипт фреймворки, который работают с интерфейсом?

Я пользуюсь jQuery и этот эффект с плавным изменением фона пишется буквально в 1 строчку :)

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

lifestar,

ого :) так ты умеешь делать такие эффекты?

может прикрутим такой эффект к стандартному добавлению камента на dle?

желательно на moofx ;)

Изменено пользователем ·• Greeze •·
Ссылка на сообщение
Поделиться на других сайтах

·• Greeze •·, к сожалению не умею пользоваться ни prototype ни mootools (по причине, что никогда и не пробывал, да и необходимости нет).

Так что могу только на jQuery :)

Ссылка на сообщение
Поделиться на других сайтах

·• Greeze •·, к сожалению не умею пользоваться ни prototype ни mootools (по причине, что никогда и не пробывал, да и необходимости нет).

Так что могу только на jQuery

сделаешь? ;)

мне хотя бы знать, что и куда воткнуть, чтобы при добавлении каменты был такой эффект. А с moofx сам постараюсь разобраться :)

Ссылка на сообщение
Поделиться на других сайтах

·• Greeze •·, итак

как я вставлял комментарий в DLE

Сразу оговорюсь - у меня не получилось, чтобы комментарий играл цветом, как просил ·• Greeze •·, подозреваю, что по причине перекрытия стилей. То есть я задаю для таблицы фон так <table style="background:#f00"> однако она красной не становится - значит заданы цвета для элементов, находящихся внутри таблицы (для её детей :) ). Опыт проводился на шаблоне Default - а устройство его стилей я не знаю)

А что тогда я делал?

А вот что.

Вставил в шапку шаблона загрузку скрипта jQuery

<script type="text/javascript" src="http://i.lifestar.ru/js/jquery/jquery.js"></script>

 </head>
Путь к яваскрипту ваш конечно же. Далее отправился в файл ajax/js_edit.js и в функции doAddComments, отправляющей наш комментарий прямо перед строкой
dle_comments_ajax.sendAJAX(varsString);
добавил строчку
dle_comments_ajax.onCompletion = testfunc;
где testfunc - имя моей яваскрипт функции, которую я сейчас напишу :) И вставил в шаблон самого комментария addcomments.tpl класс для общей таблицы - получилось так:
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="comment_fade">
Потом пошёл в шаблон добавления комментария addcomments.tpl и в самое начало добавил мою функцию testfunc
<script type="text/javascript">

 function testfunc()

 {

	 $(".comment_fade:last").css("background","D7E680");

 }

 </script>
Что в понятии jQuery означает найти последний элемент с классом comment_fade и добавить к нему CSS атрибут фона (опять красный цвет). Вот тут то и возникла проблема, что я не вижу мой красный фон. Ладно, думаю я - ничего страшного, будем последний комментарий плавно скрывать для теста) и поменял мою функцию testfunc на:
<script type="text/javascript">

 function testfunc()

 {

	 $(".comment_fade:last").fadeOut();

 }

 </script>
Это значит плавно скрыть элемент. Так вот теперь уже возникла другая проблема. Мой ява скрипт не видит последний коммент, который добавился с помощью AJAX, другими словами всё, что пришло из AJAX запроса почему то не добавляется в DOM. Вот это да. Я конечно полез в мануал по Simple AJAX Code-Kit (SACK), но ничего путного не понял :) Короче решил я поменять функцию doAddComments чтобы AJAX запрос выполнял не стандартный SACK, а jQuery. Получилось так (старый код я не стирал а просто закомментировал:
function doAddComments(){


	 var form = document.getElementById('dle-comments-form');

 //	var dle_comments_ajax = new dle_ajax();


	 if (dle_wysiwyg == "yes") {

	 document.getElementById('comments').value = oEdit1.getXHTMLBody();

	 form.submit();

	 }

	 else {


	 closeall();


	 if (form.comments.value == '' || form.name.value == '')

	 {

		 alert ( dle_req_field );

		 return false;

	 }

 /*

	 dle_comments_ajax.onShow ('');

	 var varsString = "post_id=" + form.post_id.value;

	 dle_comments_ajax.setVar("comments", dle_comments_ajax.encodeVAR(form.comments.value));

	 dle_comments_ajax.setVar("name", dle_comments_ajax.encodeVAR(form.name.value));

	 dle_comments_ajax.setVar("mail", dle_comments_ajax.encodeVAR(form.mail.value));

	 dle_comments_ajax.setVar("skin", dle_skin);

 */

	 var sec_code = 1;

	 if ( form.sec_code ) {


//	   dle_comments_ajax.setVar("sec_code", form.sec_code.value);

		sec_code = form.sec_code.value;

	 }


	 $("#dle-ajax-comments").load(dle_root + "engine/ajax/addcomments.php",

		 {

			 post_id:form.post_id.value,

			 comments:form.comments.value,

			 name:form.name.value,

			 mail:form.mail.value,

			 skin:dle_skin,

			 sec_code:sec_code

		 },testfunc).hide();

 /*

	 dle_comments_ajax.requestFile = dle_root + "engine/ajax/addcomments.php";

	 dle_comments_ajax.method = 'POST';

	 dle_comments_ajax.execute = true;

	 dle_comments_ajax.element = 'dle-ajax-comments';

	 dle_comments_ajax.sendAJAX(varsString);

 */

	 }

 };
где testfunc - моя функция опять же, а hide() нужен для того, чтобы принятый от сервера ответ (последний комментарий) скрыть на время =) Теперь всё ок - новый комментарий попадает в DOM и теперича я свою функцию testfunc сделал такой:
<script type="text/javascript">

 function testfunc()

 {

	 $("#dle-ajax-comments").slideDown();

 }

 </script>

Это означает, что элемент с ID=dle-ajax-comments должен выезжать как бы (не зря мы его скрывали) :)

Соответственно из шаблона addcomments.tpl первоначально вставленный класс можно убирать.

Резюме: не советую использовать jQuery вместе с SACK - нет смысла, потому что первый в себе содержит все функции второго :)

Поэтому если хотите использовать jQuery на Datalife Engine - придётся проделать кропотливую работу по замене всех ajax ява скриптов на соответствующие API от jQuery.

Такие дела.

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

Вот блин. Скачал этот jQuery, правда пока ничего в нем не понял, но твое последнее предложение мне не очень понравилось.

Ссылка на сообщение
Поделиться на других сайтах

nickostyle, что делать, знаешь ведь, что красота требует жертв. А тут ещё и функциональность тоже :)

Ссылка на сообщение
Поделиться на других сайтах

·• Greeze •·, такая же фигня. Ты конечно можешь использовать mootools чисто для визуальных эффектов, но я не вижу смысла всё равно оставлять запросы AJAX на SACK - в mootools он тем более получше организован (в смысле функциональности - больше)

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...