Всем привет!
Прошу помощи в изменении встроенной системы голосования. Готовое решение найти не смог.
Для проведения фотоконкурсов всем участникам хотелось бы:
1. Возможность выставления оценки только одной фотке в указанном альбоме\категории.
2. Ограничение самих оценок только одной: "голосовать" (сейчас с 0 до 5)
Кто возьмется помочь? Заранее спасибо!
упс... что-то с кодировочкой глюк.
повторно прошу помощи в изменении системы голосования за фотки. хотелось бы сделать по принципу- только один голос за одну фотку в альбоме.
CPG 1.4.18
Про кодировку - не используйте на этом форуме Internet Explorer.
http://forum.coppermine-gallery.net/index.php/topic,37805.0.html
По теме.
Открыть файл:
ratepic.php
Найти строку:
if (!empty($user) && $user==$owner && !USER_IS_ADMIN) cpg_die(ERROR, $lang_rate_pic_php['forbidden'], __FILE__, __LINE__);
После встаить код:
if (!(mysql_num_rows($result))){
$sql = "SELECT aid " . "FROM {$CONFIG['TABLE_PICTURES']} " . "WHERE pid = '$pic'";
$result = cpg_db_query($sql);
if (mysql_num_rows($result)){
$row = mysql_fetch_array($result);
$sql = "SELECT pid " . "FROM {$CONFIG['TABLE_PICTURES']} " . "WHERE aid = '$row[aid]'";
$result = cpg_db_query($sql);
if (mysql_num_rows($result)){
while($row = mysql_fetch_array($result)){
$pic_array[] = $row[pid];
}
}
}else{
cpg_die(ERROR, $lang_rate_pic_php['non_exist_ap'], __FILE__, __LINE__);
}
$sql = "SELECT pic_id " . "FROM {$CONFIG['TABLE_VOTES']} " . "WHERE user_md5_id = '$user_md5_id'";
$result = cpg_db_query($sql);
if (mysql_num_rows($result)){
while($row = mysql_fetch_array($result)){
$pic_array_votes[] = $row[pic_id];
}
}
}
foreach ($pic_array_votes as $k=>$v){
if (array_search($v, $pic_array)){
cpg_die(ERROR, $lang_rate_pic_php['already_rated'], __FILE__, __LINE__);
}
}
В коде выше ошибка
$lang_rate_pic_php['already_rated']
означает, что в данном альбоме вы уже голосовали.
Поэтому её можно изменить на свою через языковый файл.
Makc666, спасибо!
На сколько я понял, эти изменения позволяют голосовать только за одну фотку в альбоме. А каким образом ограничить количество выставляемых оценок и вывод результатов голосования?
чуть подробнее поясню чего я хочу добиться:
1. возможность проголосовать только за одну фотку. -выполнено.
2. выставляется только одна оценка. сейчас с 0 до 5.
3. поскольку оценка одна, то в результатах голосования хотелось бы видеть не общий балл, а просто количество голосов. возможно этого можно добиться оставлением одной оценки в 1 балл. тогда и получится, что кол-во баллов будет соответсвовать кол-ву проголосовавших. но как этого добиться?
4. возможно ли скрыть результаты голосования для определенной группы участников, но оставив при этом возможность голосовать?
Quote from: D.Kalessky on February 02, 2010, 07:36:25 AM
2. выставляется только одна оценка. сейчас с 0 до 5.
В версии 1.5.2+ можно выбирать количество выставляемых звёзд для голосования.
Quote from: D.Kalessky on February 02, 2010, 07:36:25 AM
3. поскольку оценка одна, то в результатах голосования хотелось бы видеть не общий балл, а просто количество голосов. возможно этого можно добиться оставлением одной оценки в 1 балл. тогда и получится, что кол-во баллов будет соответсвовать кол-ву проголосовавших. но как этого добиться?
Наверное переходить в будещем на 1.5.2+
Quote from: D.Kalessky on February 02, 2010, 07:36:25 AM
4. возможно ли скрыть результаты голосования для определенной группы участников, но оставив при этом возможность голосовать?
D.Kalessky, я уже много раз писал, что на php можно сделать что угодно.
подскажите, пожалуйста, какая часть кода в CPG 1.4.18 отвечает за оценки, которыми можно оценить фотографии?
спасибо
Quote from: D.Kalessky on March 01, 2010, 07:30:50 AM
подскажите, пожалуйста, какая часть кода в CPG 1.4.18 отвечает за оценки, которыми можно оценить фотографии?
спасибо
Отвечает целый файл ratepic.php
Уточните вопрос.
уточняю свой вопрос, хотя он был задан мной несколькими сообщениями выше.
пользователи галереи убедительно просят сделать так, чтоб можно было выставлять только одну оценку фотографии, а не по градации от 0 до 5 баллов, т.е. мне нужна только одна оценка в 1 балл.
Quote from: D.Kalessky on March 04, 2010, 02:58:19 PM
уточняю свой вопрос, хотя он был задан мной несколькими сообщениями выше.
пользователи галереи убедительно просят сделать так, чтоб можно было выставлять только одну оценку фотографии, а не по градации от 0 до 5 баллов, т.е. мне нужна только одна оценка в 1 балл.
1. Открыть:
ratepic.php2. Найти:
$rate = min($rate, 5);
$rate = max($rate, 0);
3. Заменить на:
$rate = min($rate, 1);
$rate = max($rate, 1);
4. Открыть:
themes.inc.php5. В свою тему скопировать функцию:
$template_image_rating = <<<EOT
6. В скопированном коде удалить или закомментировать срочки отвечающие за звезды 0, 2, 3, 4, 5.
Т.е должна остаться только срока, начинающаяся на:
<td class="tableb_compact" width="17%" align="center"><a href="{RATE1}" title="{POOR}" rel="nofollow"><img src="{LOCATION}images/rating1.gif
7. В данной строке можно подправить перевод для фрагмента:
title="{POOR}"К примеру, заменить на:
title="{TITLE}"8. Можно заменить изображение /images/rating1.gif на какое-нибудь другое.
Makc666, спасибо!
После внесенных изменений все более менее стало похоже на то, что хотел.
Но еще вопросик есть. Сейчас в альбоме показывается рейтинг фоток так: текущий рейтинг: 1 / 5 - Голосов: 1) Как оставить только количество проголосовавших? т.е. убрать 1 / 5 и оставить только Голосов: 1 ?
В очередной раз спасибо!
с предыдущим вопросом разобрался сам. спс
Quote from: D.Kalessky on March 09, 2010, 09:38:17 AM
с предыдущим вопросом разобрался сам. спс
Если напишите, как разобрались, что нужно делать всегда, то мы будем благодарны!