Форум русской поддержки Joomla!® CMS
08.12.2016, 20:12:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Непропадающие кнопи голосования. Как сделать?

 (Прочитано 2539 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ABTOP
JComments Tester
*

Репутация: +33/-4
Offline Offline

Пол: Мужской
Сообщений: 481



« : 20.03.2012, 23:40:45 »

В нормальном функционале при нажатии на одну из кнопок голосования обе кнопки пропадают. Это логично: голосование сделано и надобности в кнопках больше нет. Однако я делаю шаблон в котором кнопки должны обесточиваться, но на виду оставаться. JavaScript конечно срабатывает и прячет мои кнопки. Это происходит довольно быстро и я не успеваю засечь, что именно скрипт делает для изменения верстки. Прочитать скрип я не смог, т.к. я в этом не разбираюсь.

Вопрос: что именно делается с вёрсткой для прятания голосовательных кнопок после голосования?
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6850


снова дома...


« Ответ #1 : 21.03.2012, 11:27:52 »

После того, как за комментарий оценили, дергается шаблон tpl_comment, в нем вызывается функция getCommentVoteValue и то, что он возвращает заменяет текущее содержимое элемента. Поэтому если нужно, чтобы кнопки всегда были видны, надо в этой функции поменять проверку:
Код
<?php
if ($this->getVar('button-vote', 0) == 1) {
?>
<a href="#" class="vote-good" title="<?php echo JText::_('BUTTON_VOTE_GOOD'); ?>" onclick="jcomments.voteComment(<?php echo $comment->id;?>, 1);return false;"></a><a href="#" class="vote-poor" title="<?php echo JText::_('BUTTON_VOTE_BAD'); ?>" onclick="jcomments.voteComment(<?php echo $comment->id;?>, -1);return false;"></a>
<?php
}
Записан
ABTOP
JComments Tester
*

Репутация: +33/-4
Offline Offline

Пол: Мужской
Сообщений: 481



« Ответ #2 : 21.03.2012, 19:36:06 »

Цитировать
...вызывается функция getCommentVoteValue...
Да, но я её не использую.
Числа голосов я вывожу напрямик, как они есть, без подсчёта разницы через
echo intval($comment->isgood); или $comment->ispoor
А изменения CSS-класса на vote-none сделано прямо в шаблоне.

То есть весь этот блок выглядит так:
Код:
<span class="comments-vote">
<span id="comment-vote-holder-<?php echo $comment->id; ?>">
<span class="vote-good">
<?php if(intval($comment->isgood)!= 0) {
echo intval($comment->isgood);
}
else {
echo "&nbsp;";
} ?>
</span>

<?php
if ($this->getVar('button-vote', 0) == 1) {
?>
<a href="#" class="vote-good" title="<?php echo JText::_('BUTTON_VOTE_GOOD'); ?>" onclick="jcomments.voteComment(<?php echo $comment->id;?>, 1);return false;"></a>
<a href="#" class="vote-poor" title="<?php echo JText::_('BUTTON_VOTE_BAD'); ?>" onclick="jcomments.voteComment(<?php echo $comment->id;?>, -1);return false;"></a>
<?php
}
else
{
?>
<a href="#"  class="vote-none" title="<?php echo JText::_('ERROR_ALREADY_VOTED'); ?>" onclick="return false"></a>
<a href="#"  class="vote-none" title="<?php echo JText::_('ERROR_ALREADY_VOTED'); ?>" onclick="return false"></a>
<?php
}
?>
<span class="vote-poor">
<?php if(intval($comment->ispoor)!= 0) {
echo intval($comment->ispoor);
}
else {
echo "&nbsp;";
} ?></span>
</span>
</span>

Проблема в том, что кнопки (и цифры тоже) исчезают сразу после нажатия на них.
Иными словами, исчезает всё вутри
<span id="comment-vote-holder-x"></span>
При перезагрузке страницы они, конечно, появляются снова и в правильном виде, но хотелось бы чтобы JavaScript цифры продвигал, но ничего не прятал.
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6850


снова дома...


« Ответ #3 : 21.03.2012, 19:44:25 »

Еще раз, когда нажимают на кнопку голосования уходит запрос, который обрабатывается в jcomments.ajax.php, он после оценки вызывает указанный шаблон с параметром get_comment_vote, а тот в свою очередь дергает указанную функцию:
Код:
if ($this->getVar('get_comment_vote', 0) == 1) {
// return comment vote
$this->getCommentVoteValue( $comment );
Если у тебя обработки этого нет, то в ответ получишь пустоту - все скроется.
Записан
ABTOP
JComments Tester
*

Репутация: +33/-4
Offline Offline

Пол: Мужской
Сообщений: 481



« Ответ #4 : 21.03.2012, 19:52:11 »

О! Так понятнее!  Grin
Щас подумаем, как переписать getCommentVoteValue в нужную сторону.
Спасибо.
Записан
ABTOP
JComments Tester
*

Репутация: +33/-4
Offline Offline

Пол: Мужской
Сообщений: 481



« Ответ #5 : 22.03.2012, 02:08:07 »

Сергеи, такой вопрос попутно:
в файле /components/com_jcomments/jcomments.php строка 314
Код:
updateVote: function(i,t){this.busy.stop();var c=this.$('comment-vote-holder-'+i);if(c){c.innerHTML=t;}},
Что есть этa "t" и где она задаётся?

Я почему спрашиваю.
Строкой выше
Код:
voteComment: function(i){var v=this.$('comment-vote-holder-'+i);if(v){v.innerHTML='';this.busy.start(v,null);}return this.ajax('JCommentsVoteComment',arguments);},
вы стираете всё внутри comment-vote-holder-х . Затем через updateVote:туда же что-то вставляете из этой "t".
Так вот я думаю, что вы вставляете только выход функции getCommentVoteValue
то есть
<span class="vote-<?php echo $class; ?>"><?php echo $value; ?></span>
и ничего больше.

К условию if ($this->getVar('button-vote', 0) == 1) вы не возвращаетесь и поэтому оно никакой роли для AJAX-а не играет.
Я так думаю ещё и потому, что у меня выводятся числа intval($comment->isgood) за пределами этого условия и они должны были бы по идее отображаться всегда.

Опять же правильное отображение кнопок и цифр восстанавливается только после полной перезагрузки страницы, что вызывает прохождение через это самое условие.
« Последнее редактирование: 22.03.2012, 03:51:46 от ABTOP » Записан
МихаилМ
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 64


« Ответ #6 : 19.09.2015, 16:06:35 »

если решили проблему - выложите решение
Записан
ABTOP
JComments Tester
*

Репутация: +33/-4
Offline Offline

Пол: Мужской
Сообщений: 481



« Ответ #7 : 06.10.2015, 07:28:16 »

Решение стало частью шаблона.
http://www.joomlatune.com/forum/index.php?topic=5258.0
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet